Как открыть ссылку на новой вкладке (а не в новом окне)?

У меня есть кнопка "Открыть", которая "вычисляет" ссылку, которая должна быть открыта на новой вкладке. Я пытаюсь использовать:

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' ссылка открывается на новой вкладке.

Есть ли решение?

Ответ 1

Обновление [ 2019 ] Большинство браузеров сегодня открываются в новой вкладке, когда вы устанавливаете цель на _blank. Дни всплывающих окон давно прошли. Теперь мы можем использовать:

 <a href="some url" target="_blank">content of the anchor</a>

Большинство здравомыслящих браузеров откроют новое окно в новой вкладке.


CSS3 поддерживает "открыть в новой вкладке", свойство target-new

target-new: window | tab | none;

Обновление [ 2016 ]: этот метод никогда не входил в спецификацию CSS3, как указывает один из комментариев. Это не должно быть использовано. Тем не менее, можно заметить, что большинство современных браузеров в любом случае открывают ссылки target='_blank' на новой вкладке, если только не попытаться изменить размер новой вкладки сразу после этого. Тем не менее, похоже, что в спецификациях нет механизма, чтобы вызвать такое поведение.


[ 2011 ] Для метода принудительного открытия в новой вкладке, который хорошо поддерживается, попробуйте следующее:

<a href="some url" target="_newtab">content of the anchor</a>

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

Ответ 2

За исключением целевого нового параметра CSS3 @anirudh4444, вы не можете и в основном, вероятно, не должны этого делать. Вы пытаетесь управлять пользовательским интерфейсом, когда это, скорее всего, останется для пользователя.

Ответ 3

Вы можете использовать любой из следующих вариантов: я тестировал их все в 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, по какой-то причине просто открыл страницу, на которой я был включен, когда я нажал ссылку.

Ответ 4

Мне удалось решить эту проблему, используя элемент "form".

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

Ответ 5

Ваша форма имеет target = "_ blank" (включая лидирующий символ подчеркивания), в то время как ваша простая ссылка имеет цель = 'blank' без главного подчеркивания. "_blank" - это зарезервированное слово, определяющее конкретное действие, но "пустое" - это имя конкретного, возможно, нового окна. Вот почему вы получаете разные результаты. Оба являются всплывающие окна, но разные типы.

Каждый пользователь имеет полный контроль над тем, должно ли всплывающее окно открывать новое окно или новую вкладку. Вы ничего не можете с этим поделать.

Ответ 6

В 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

Ответ 7

В случае ссылки да будет работать только тег target.

Но в случае кнопки попробуйте сделать это с помощью функции onclick вместо того, чтобы просто использовать _blank

Вместо этого используйте функцию window.open(url, target) - для этого требуется URL-адрес и имя целевого окна, которое ведет себя так же, как атрибут target = "something" в ссылке.... например

button(type="button", onclick="window.open('auth/google', '_blank');")

Это должно работать.