Как использовать цель в 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>