Программно открывать новые страницы на вкладках - PullRequest
96 голосов
/ 09 января 2009

Я пытаюсь «заставить» Safari или IE7 открыть новую страницу , используя новую вкладку .

Программно я имею в виду что-то вроде:

window.open('page.html','newtaborsomething');

Ответы [ 11 ]

110 голосов
/ 09 января 2009

Вы можете, в Firefox, он работает, добавить атрибут target = "_ newtab" к якору, чтобы принудительно открыть новую вкладку.

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

В JavaScript вы можете использовать

window.open('page.html','_newtab');

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

Дайте мне знать, работает ли он и в другом браузере (в настоящее время у меня нет возможности попробовать его в другом браузере, кроме Firefox).

Редактировать: добавлена ​​ссылка на ie7 Может быть, эта ссылка может быть полезна
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/

62 голосов
/ 09 января 2009

Вы не можете напрямую управлять этим, потому что этот параметр контролируется пользователями Internet Explorer.

Открытие страниц с использованием Window.open с другим именем окна откроется в новом окне браузера, например, всплывающем окне, ИЛИ откроется в новой вкладке, если пользователь настроил браузер на это.

43 голосов
/ 25 февраля 2011

Те из вас, кто пытается использовать следующее:

window.open('page.html', '_newtab');

действительно должен смотреть на метод window.open.

Все, что вы делаете, это говорите браузеру открыть новое окно с именем "_newtab" и загрузить в него page.html. Каждая новая страница, которую вы загружаете, будет загружена в это окно. Однако, если у пользователя настроен браузер на открытие новых страниц в новых вкладках вместо новых окон, он откроет вкладку. В любом случае, оно использует одно и то же имя для окна или вкладки.

Если вы хотите, чтобы разные страницы открывались в разных окнах или вкладках, вам придется изменить ИМЯ нового окна / вкладки на что-то другое, например:

window.open('page2.html', '_newtab2');

Конечно, именем нового окна / вкладки может быть любое имя, например, page1, page2, page3 и т. Д. Вместо _newtab2.

14 голосов
/ 09 января 2009

Пользователь сам решает, хотят ли они использовать новые вкладки или новые окна, изменение этого поведения не является задачей разработчика. Я не думаю, что вы можете сделать это.

Моя любимая мозоль - я ненавижу, когда сайты заставляют меня открываться в новом окне / вкладке, - я вполне способен принять это решение для себя. Особенно, когда они делают это в javascript - это действительно бесполезно.

7 голосов
/ 09 февраля 2011

Вы уже пробовали как

var open_link = window.open('','_blank');
open_link.location="somepage.html";
3 голосов
/ 01 марта 2010

Я узнал в Chrome,

window.open('page.html','_newtab')

будет работать только один раз.

Вы можете использовать:

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

Чтобы открыть несколько новых вкладок.

2 голосов
/ 09 ноября 2011

код, который я использую с jQuery:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

Это полезно для различения событий щелчка родительского элемента в дочернем элементе. Используя этот метод, вы не инициируете событие click родителя.

0 голосов
/ 12 февраля 2019

Это работает 100%

window.open('http://www.google.com/','_newtab' + Date.now());

0 голосов
/ 11 августа 2012

Если вы хотите, вы можете использовать этот метод, который немного хакерский, но предлагает желаемую функциональность:

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()
0 голосов
/ 28 ноября 2011

Это может работать, если вы можете вызвать командный файл (я использую php с XP sp2 и IE8 ... вы можете попробовать IE7, не знаю). Используйте следующее (или подобное) в вашем .bat файле, чтобы открыть Windows: Пуск "" C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore "http://www.site.com". Между кавычкой и C: \ Progr ... и т. Д. Нет пробела. В какой-то момент это может привести к открытию новых окон (т. Е. , target = "_ blank"), а не новые вкладки, но работает до определенного момента, не подвергается тщательному тестированию. Чтобы использовать это в обычном пакетном файле (CMD.exe), вам, вероятно, нужно иметь уже открытое окно. Просто поделиться чем-то Я наткнулся. РЕДАКТИРОВАНИЕ для разъяснения.

...