Я пытаюсь "заставить" Safari или IE7 открыть новую страницу используя новую вкладку.
Программно я имею в виду что-то вроде:
window.open('page.html','newtaborsomething');
Я не уверен, что понял суть - разрабатываете ли вы приложение, работающее с IE, и хотите открывать каждую новую страницу на новой вкладке? Или вы просто хотите настроить IE, чтобы открывать новую вкладку при нажатии на ссылку? Или вы создаете сайт с большим количеством ссылок и хотите, чтобы они открывались отдельно? Пожалуйста, сделайте это яснее.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Пользователь сам решает, хотят ли они использовать новые вкладки или новые окна, изменение этого поведения не входит в обязанности разработчика. Я не думаю, что ты сможешь это сделать.
Моя любимая мозоль - я ненавижу, когда сайты заставляют меня открываться в новом окне / вкладке - я вполне способен принять это решение для себя. В частности, когда они делают это в javascript - это действительно бесполезно.
+1 к Сэму - открытие новых страниц во вкладках или окнах - это выбор браузера (и пользователя). Вообще ненавижу, когда любой сайт открывает новое окно.
Вдобавок к этому: в "строгом" определении нет действительного атрибута "target", потому что он не раздражает пользователя. Попробуйте: validator.w3.org
Мне нравится открывать группы вкладок дома, поэтому в этом случае я являюсь пользователем. Напоминаем, что бывают исключения.
Хотя я согласен, что когда сайты форсируют действия, это может раздражать, но я думаю, что это немного бесполезно, если просто заявить, что вы не должны что-то делать, не учитывая причины, по которым кто-то может этого захотеть. Сайты часто открывают элементы в новых вкладках, особенно ссылки на внешние сайты, или когда нецелесообразно заменять активную страницу новым контентом, чтобы это не было совершенно неожиданным поведением. Я бы также предположил, что это на самом деле не ответ на вопрос, и его лучше было бы использовать в качестве комментария к исходному сообщению.
Я не согласен, предполагая, что значение по умолчанию для пользователя - это выбор дизайна для каждого веб-приложения, а не для каждого браузера. Браузер может подписаться на подписку по умолчанию, в то время как приложение этого не делает. Кроме того, если браузеры предоставляют пользователю возможность переопределить значения по умолчанию приложения / настройки браузера по умолчанию, то это лучшее из обоих миров. Пользователь> Приложение> Браузер.
Вы можете, в 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/
Спасибо за этот совет по Firefox, теперь я обновил свой аддон Target Killer, чтобы удалить «newtab» и «newtab». :П
Я очень ценю ваш ответ, но я знаю, что Firefox сделает это (некоторые тексты, не проверенные мной, отмечают, что это не всегда верно, есть шанс 50-50 получить новое окно или вкладку). Я тоже думаю, что это не должно быть проблемой, но, знаете ли, клиенты :)
Это может быть не для всех сборок / платформ, но Firefox 3.5 в Linux не позволяет делать это более одного раза ... если у вас есть несколько ссылок target = "_ newtab" на вашей странице, нажав на любую из них будет заполнять только новую вкладку Один ... то есть последующие щелчки будут перезаписывать все, что было открыто ранее на этой вкладке. Это заставляет меня думать, что это на самом деле открытие вкладки названный "_newtab", а не обходной путь для конкретного браузера.
Я почти уверен, что "_newtab" не имеет смысла, если у кого-то нет документации об обратном. Все, что вы делаете, - это открываете окно, в котором название является _newtab (поэтому все последующие ссылки с этой целью открываются в одном окне). Вы можете настроить таргетинг на «foo» или «bar» и увидеть то же поведение. Единственными известными целями являются _blank, _self, _parent и _top. htmlcodetutorial.com/linking/_A_TARGET.html
Вы не можете напрямую контролировать это, потому что это опция, контролируемая пользователями Internet Explorer.
Открытие страниц с использованием Window.open с другим именем окна откроется в новом окне браузера как всплывающее окно, ИЛИ ЖЕ откроется в новой вкладке, если пользователь настроил браузер для этого.
Когда выбран параметр «Разрешить Internet Explorer решать, как открываются всплывающие окна», какие критерии использует Internet Explorer для принятия этого решения?
Я узнал в Chrome,
window.open('page.html','_newtab')
будет работать только один раз.
Ты можешь использовать:
window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));
Чтобы открыть несколько новых вкладок.
это потому, что в Chrome _newtab - это просто имя, и вы запрашиваете его, чтобы открыть страницу на вкладке с именем "_newtab"
<a href = "http://www.google.com/" target = "_self">New Tab Example</a>
Работает в IE7.
С уважением,
Гленн
Гленн, это противоположность тому, о чем просил ОП. _self откроет документ в том же окне или фрейме.
Также это не способ открытия программным способом. Удивительно, как с этим ответом он набирает +10 повторений (+ 3 / -10).
Вы уже пробовали подобное
var open_link = window.open('','_blank');
open_link.location = "somepage.html";
Совместим ли этот кроссбраузер? Кажется, работает в IE8, беспокоится о будущих версиях или других браузерах.
Да .. он совместим с кроссбраузерностью. До сих пор у меня с этим проблем не было: D
Те из вас, кто пытается использовать следующее:
window.open('page.html', '_newtab');
действительно стоит взглянуть на метод window.open.
Все, что вы делаете, - это указываете браузеру открыть новое окно, НАЗВАННОЕ «_newtab», и загрузить в него page.html. Каждая новая страница, которую вы загружаете, будет загружаться в это окно. Однако, если в браузере пользователя настроено открытие новых страниц в новых вкладках, а не в новых окнах, вкладка откроется. В любом случае, для окна или вкладки используется одно и то же имя.
Если вы хотите, чтобы разные страницы открывались в разных окнах или вкладках, вам придется изменить ИМЯ нового окна / вкладки на другое, например:
window.open('page2.html', '_newtab2');
Конечно, имя нового окна / вкладки может быть любым, например, page1, page2, page3 и т. д. Вместо _newtab2.
знает свое дело. _newtab не является зарезервированным именем. _blank - это особая функция, которая открывает еще одно неуказанное и безымянное окно / вкладку, которую вы можете использовать снова и снова. '_newtab' не является особенным, за исключением того, что это конкретное имя, которое вы дали новой вкладке (по умолчанию) или окну, которое ваш браузер постоянно обновляет с любым URL-адресом, который вы ему отправляете.
Код, который я использую с jQuery:
$("a.btn_external").click(function() {
url_to_open = $(this).attr("href");
window.open(url_to_open, '_blank');
return false;
});
Это полезно для различения событий щелчка родительского элемента в дочернем элементе. Используя этот метод, вы не запускаете родительское событие click.
Почему бы просто не использовать старый добрый HTML? <a href = "page.html" target = "_blank">foo</a>
@pixelastic «Используя этот метод, вы не запускаете родительское событие щелчка».
Это может сработать, если вы можете вызвать командный файл (я использую php с XP sp2 и IE8 ... вы можете попробовать IE7, не знаю). Используйте следующее (или подобное) в вашем .bat файле, чтобы открыть Windows: Запустите "" C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore "http://www.site.com". Между кавычками и C: \ Progr ... и т. д. Нет пробела. В какой-то момент это может начать открывать новые окна (например, target = "_ blank"), а не новые вкладки, но работает до определенного момента; не тестировался всесторонне. Чтобы использовать это в обычном пакетном файле (CMD.exe), вам, вероятно, нужно, чтобы окно уже было открыто. Просто поделился тем, на что наткнулся. РЕДАКТИРОВАТЬ для разъяснения.
Если вы хотите, вы можете использовать этот метод, который немного взломан, но будет предлагать желаемую функциональность:
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()
вы можете предоставить jsfiddle?
Это работает на 100%
window.open('http://www.google.com/','_newtab' + Date.now());
Спасибо за все ваши комментарии и ответы, я знаю, что это не имеет большого значения и не должно быть проблемой в моей разработке, но это запрос клиента, а не важный, который я просто хотел знать. Проблема в том, что IE7 и Safari не открывают всплывающее окно с вкладкой, использующей javascript или целевой атрибут, правда?