Как использовать цель в location.href

В настоящее время я разрабатываю веб-приложение, где мне нужно открыть всплывающее окно, чтобы показать отчет. Проблема в том, что некоторые версии explorer не поддерживают функцию window.open javascript, поэтому, когда это так, я поймаю ошибку и откройте новый url с помощью location.href. Здесь код:

try {
    window.open(url, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
} catch(e) {
    location.target = "_blank";
    location.href = url;
}

Проблема в том, что location.target не работает, и я хотел бы знать, есть ли способ указать цель location.href, чтобы его можно было открыть на новой вкладке.

Ответы

Ответ 1

Проблема в том, что некоторые версии explorer не поддерживают функцию window.open javascript

Скажи что? Можете ли вы предоставить ссылку для этого заявления? С уважением, я думаю, вы ошибаетесь. Это работает на IE6 и IE9, например.

Большинство современных браузеров не позволят вашему коду использовать window.open, за исключением прямого ответа на пользовательское событие, чтобы сохранить всплывающие окна спама и т.д. возможно, это то, о чем вы думаете. Пока вы используете только window.open при ответе на пользовательское событие, вы должны быть в порядке, используя window.open — со всеми версиями IE.

Нет способа использовать location для открытия нового окна. Просто window.open или, конечно, пользователь, щелкнув ссылку с target="_blank".

Ответ 2

попробуйте этот, который имитирует щелчок на якоре.

var a = document.createElement('a');
a.href='http://www.google.com';
a.target = '_blank';
document.body.appendChild(a);
a.click();

Ответ 3

Вы можете использовать это в любом элементе, где работает onclick:

onclick="window.open('some.htm','_blank');"

Ответ 4

Вы можете попробовать следующее:

        <script type="text/javascript">
         function newWindow(url){
                window.open(url);
            }
        </script>

И вызовите функцию

Ответ 5

Если вы перейдете к решению с помощью @qiao, возможно, вы захотите удалить добавленный дочерний элемент, так как вкладка остается открытой, а последующие клики добавили бы больше элементов в DOM.

// Code by @qiao
var a = document.createElement('a')
a.href = 'http://www.google.com'
a.target = '_blank'
document.body.appendChild(a)
a.click()
// Added code
document.body.removeChild(a)

Возможно, кто-то может опубликовать комментарий к своему сообщению, потому что я не могу.

Ответ 6

Если вы используете <a/> для запуска отчета, вы можете попробовать этот подход. Вместо того, чтобы пытаться создать новое окно, когда window.open() завершается с ошибкой, создайте сценарий по умолчанию, чтобы открыть новое окно через target (и предотвратить его, если window.open() успешно).

HTML

<a href="http://my/url" target="_blank" id="myLink">Link</a>

JS

var spawn = function (e) {
    try {
        window.open(this.href, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
        e.preventDefault(); // Or: return false;
    } catch(e) {
    // Allow the default event handler to take place
    }
}

document.getElementById("myLink").onclick = spawn;

Ответ 7

Почему у вас нет скрытого тега привязки на странице с целевым набором по мере необходимости, а затем имитируйте щелчок по нему, когда вам нужно выскочить?

Как смоделировать клик на якорный тег?

Это будет работать в тех случаях, когда window.open не работает

Ответ 8

Начиная с 2014 года, вы можете вызвать щелчок на теге <a/>. Однако по соображениям безопасности вы должны сделать это в обработчике событий click, или браузер пометит его как всплывающее окно (некоторые другие события могут позволить вам безопасно запускать открытие).

jsFiddle

Ответ 9

<a href="url" target="_blank"> <input type="button" value="fake button" /> </a>