Как открыть ссылку в новой вкладке (а не в новом окне)?
У меня есть кнопка "Открыть", которая "вычисляет" ссылку, которая должна быть открыта в новой вкладке. Я пытаюсь использовать:
window.open(url, '_blank');
Но это открывает новое окно.
Я также попробовал следующий метод:
<form id="oform" name="oform" action="" method="post" target="_blank">
</form>
...
document.getElementById("oform").action = url;
document.getElementById("oform").submit();
Тем не менее, вместо новой вкладки открывается новое окно.
При использовании простого <a href...>
с target='blank'
, ссылка открывается в новой вкладке.
Есть ли решение?
7 ответов
CSS3 поддерживает "открыть в новой вкладке", свойство target-new
target-new: window | tab | none;
Обновление [2016]: этот метод никогда не входил в спецификацию CSS3, как указывает один из комментариев. Это не должно быть использовано. Тем не менее, можно видеть, что большинство современных браузеров открыты target='_blank'
в любом случае ссылки в новой вкладке, если только не попытаться изменить размер новой вкладки сразу после этого. Тем не менее, похоже, что в спецификациях нет механизма для принудительного применения этого поведения.
[2011] Для метода принудительного открытия в новой вкладке, который хорошо поддерживается, попробуйте следующее:
<a href="some url" target="_newtab">content of the anchor</a>
Иначе, используйте этот метод, чтобы немедленно изменить размер окна, чтобы блокировщики всплывающих окон не убивали ваше всплывающее окно.
За исключением упомянутой опции CSS3 target-new @anirudh4444, вы не можете, а главное, вероятно, не должны. Вы пытаетесь контролировать работу пользователя, когда это, скорее всего, следует оставить пользователю.
Вы можете использовать любой из следующих, я проверил их все в 6 различных браузерах. (Google Chrome, Mozilla Firefox, Microsoft Internet Explorer, Opera, K-meleon* и Seamonkey.)
<a href="blaah" target="_blank">Blaah</a>
<a href="blaah" target="_tab">Blaah</a>
<a href="blaah" target="_new">Blaah</a>
Все они работают одинаково, и выбор полностью зависит от предпочтений.
* K-meleon, по какой-то причине просто открыл страницу, на которой я был, когда щелкнул ссылку.
Я смог решить эту проблему, используя элемент "форма".
function openNewTab(link) {
var frm = $('<form method="get" action="' + link + '" target="_blank"></form>')
$("body").append(frm);
frm.submit().remove();
}
Для полной реализации и деталей посетите мой пост http://mukesh.in/force-open-new-tab-in-browsers-instead-of-windows/
Или посмотрите это JSFiddle
Ваша форма имеет target="_blank" (включая начальное подчеркивание), а ваша простая ссылка имеет target='blank' без начального подчеркивания. "_Blank" - это зарезервированное слово, определяющее конкретное действие, но "blank" - это имя определенного, возможно, нового окна. Вот почему вы получаете разные результаты. Оба всплывающих окна, но разные типы.
Каждый пользователь имеет полный контроль над тем, должно ли всплывающее окно открывать новое окно или новую вкладку. Вы ничего не можете с этим поделать.
Следующие работы в Chrome:
<script>
function buildAndGo() {
var aEl = document.getElementById('missingLink');
aEl.href = "#" + resultOfSomeCalculation();
var e = document.createEvent('MouseEvents');
e.initEvent( 'click', true, true );
aEl.dispatchEvent(e);
}
</script>
...
<button onclick="buildAndGo()">Do it</button>
<a href="#" id="missingLink" target="_blank" style="visibility: hidden;"></a>
Работа из следующих источников, чтобы попытаться заставить работать версию IE: Selenium BrowserBot, YUI User Action
В случае ссылки да будет работать только использование целевого тега.
Но в случае кнопки попробуйте сделать это с помощью функции onclick вместо использования _blank
Вместо этого используйте функцию window.open(url, target) - она принимает URL-адрес и имя целевого окна, которое ведет себя так же, как атрибут target="something" в ссылке.... как это
button(type="button", onclick="window.open('auth/google', '_blank');")
Это должно работать.