Я пытаюсь открыть URL в новой вкладке, в отличие от всплывающего окна.
Я видел похожие вопросы, где ответы будут выглядеть примерно так:
window.open(url,'_blank');
window.open(url);
Но ни один из них не работал для меня, браузер все еще пытался открыть всплывающее окно.
javascript
отметка
источник
источник
Ответы:
Ничто из того, что автор не может сделать, может открыть новую вкладку вместо нового окна; это предпочтение пользователя . (Обратите внимание, что предпочтение пользователя по умолчанию в большинстве браузеров предназначено для новых вкладок, поэтому тривиальный тест в браузере, в котором это предпочтение не было изменено, не продемонстрирует этого.)
CSS3 предложил target-new , но спецификация была заброшена .
Обратное не верно; указав размеры для окна в третьем аргументе
window.open()
, вы можете запустить новое окно, когда предпочтение отдается вкладкам.источник
window.open
говорит браузеру открыть что-то новое, затем браузер открывает то, что выбрано в его настройках - вкладка или окно. В браузерах, с которыми вы тестировали, измените настройки, чтобы они открывались в новом окне вместо вкладки, и вы увидите, что решения других компаний ошибочны.Это трюк,
В большинстве случаев это должно происходить непосредственно в
onclick
обработчике ссылки, чтобы предотвратить блокировку всплывающих окон и поведение по умолчанию «нового окна». Вы можете сделать это таким образом, или добавив прослушиватель событий к вашемуDOM
объекту.http://www.tutsplanet.com/open-url-new-tab-using-javascript/
источник
window.open()
не будет открываться в новой вкладке, если это не происходит в фактическом событии клика. В приведенном примере URL открывается по фактическому событию клика. Это будет работать при условии, что у пользователя есть соответствующие настройки в браузере .Точно так же, если вы пытаетесь выполнить Ajax-вызов внутри функции click и хотите открыть окно в случае успеха, убедитесь, что вы выполняете Ajax-вызов с установленным
async : false
параметром.источник
async: false
не работает в Chrome Чтобы открыть новое окно из обратного вызова, вам нужно сначала открыть пустое окно перед отправкой HTTP-запроса, а затем обновить его. Вот хороший взлом .window.open
Не удается надежно открыть всплывающие окна на новой вкладке во всех браузерахРазличные браузеры реализуют поведение по-
window.open
разному, особенно с учетом предпочтений браузера пользователя. Вы не можете ожидать, что одно и то же поведениеwindow.open
будет истинным для всех Internet Explorer, Firefox и Chrome из-за различных способов, которыми они обрабатывают настройки браузера пользователя.Например, пользователи Internet Explorer (11) могут открывать всплывающие окна в новом окне или на новой вкладке, вы не можете заставить пользователей Internet Explorer 11 открывать всплывающие окна определенным образом
window.open
, как указано в ответе Квентина .Что касается пользователей Firefox (29), использование
window.open(url, '_blank')
зависит от предпочтений вкладок их браузера, хотя вы все равно можете заставить их открывать всплывающие окна в новом окне, указав ширину и высоту (см. Раздел «Как насчет Chrome?» Ниже).демонстрация
Зайдите в настройки вашего браузера и настройте его для открытия всплывающих окон в новом окне.
Internet Explorer (11)
Тестовая страница
После настройки Internet Explorer (11) для открытия всплывающих окон в новом окне, как показано выше, используйте следующую тестовую страницу для тестирования
window.open
:Обратите внимание, что всплывающие окна открываются в новом окне, а не в новой вкладке.
Вы также можете протестировать эти фрагменты выше в Firefox (29) с его предпочтением вкладки, установленным для новых окон, и увидеть те же результаты.
Как насчет Chrome? Он реализуется
window.open
иначе, чем Internet Explorer (11) и Firefox (29).Я не уверен на 100%, но похоже, что Chrome (версия
34.0.1847.131 m
) не имеет никаких настроек, которые пользователь может использовать, чтобы выбрать, открывать ли всплывающие окна в новом окне или на новой вкладке (например, Firefox и Internet Explorer иметь). Я проверил документацию Chrome для управления всплывающими окнами , но там ничего не упоминалось о подобных вещах.Также, опять же, разные браузеры, кажется, реализуют поведение по-
window.open
разному. В Chrome и Firefox указание ширины и высоты вызовет всплывающее окно, даже если пользователь установил Firefox (29) для открытия новых окон на новой вкладке (как упоминалось в ответах на JavaScript, которые открываются в новом окне, а не на вкладке ) :Однако тот же фрагмент кода выше всегда будет открывать новую вкладку в Internet Explorer 11, если пользователи устанавливают вкладки в качестве своих настроек браузера, даже если не указать ширину и высоту, для них появится новое всплывающее окно.
Таким образом, поведение
window.open
в Chrome, по-видимому, заключается в открытии всплывающих окон на новой вкладке при использовании вonclick
событии, открытии их в новых окнах при использовании из консоли браузера ( как отмечали другие люди ) и открытии их в новых окнах при указывается с шириной и высотой.Резюме
Различные браузеры по-разному реализуют поведение в
window.open
зависимости от предпочтений браузера пользователя. Вы не можете ожидать, что одно и то же поведениеwindow.open
будет истинным для всех Internet Explorer, Firefox и Chrome из-за различных способов, которыми они обрабатывают настройки браузера пользователя.Дополнительное Чтение
window.open
документация .источник
Один лайнер:
Он создает виртуальный
a
элемент, дает егоtarget="_blank"
так, чтобы он открывался в новой вкладке, дает ему правильныйurl
href
и затем щелкает по нему.И если вы хотите, на основании этого вы можете создать некоторую функцию:
и тогда вы можете использовать его как:
Важная заметка:
openInNewTab
(а также любое другое решение на этой странице) должно быть вызвано во время обратного вызова действия пользователя - например. внутри события щелчка (не обязательно в функции обратного вызова напрямую, но во время действия щелчка).Если вы будете вызывать его вручную в какой-то случайный момент (например, внутри интервала или после ответа сервера) - он может быть заблокирован браузером (что имеет смысл, поскольку это может быть угрозой безопасности и может привести к очень плохому пользовательскому интерфейсу). )
источник
$('<a />',{'href': url, 'target', '_blank'}).get(0).click();
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
Если вы используете
window.open(url, '_blank')
, он будет заблокирован (блокировщик всплывающих окон) в Chrome.Попробуй это:
С чистым JavaScript,
источник
the request was made in a sandboxed frame whose 'allow-popups' permission is not set
Чтобы разработать ответ Стивена Спилберга, я сделал это в таком случае:
Таким образом, непосредственно перед тем, как браузер перейдет по ссылке, я устанавливаю атрибут target, поэтому он откроет ссылку в новой вкладке или окне ( зависит от настроек пользователя ).
Пример одной строки в jQuery:
Этого также можно достичь, просто используя API-интерфейсы DOM для браузера:
источник
Я использую следующее, и это работает очень хорошо!
источник
Я думаю, что вы не можете это контролировать. Если пользователь настроил свой браузер на открытие ссылок в новом окне, вы не можете заставить его открывать ссылки в новой вкладке.
JavaScript открывается в новом окне, а не во вкладке
источник
Интересным фактом является то, что новая вкладка не может быть открыта, если действие не вызывается пользователем (нажатием кнопки или чего-то еще) или, например, если оно асинхронное, это НЕ откроется в новой вкладке:
Но это может открыться в новой вкладке, в зависимости от настроек браузера:
источник
<script>open('http://google.com')</script>
в.html
файл и откройте его в новой установке последней версии Firefox; вы заметите, что Firefox с радостью открывает Google в новой вкладке (возможно, после того, как вы скажете ему разрешить всплывающие окна), а не в новом окне.Просто опуская параметры [strWindowFeatures], вы откроете новую вкладку, ЕСЛИ БЕЗ переопределения настроек браузера (настройка браузера превосходит JavaScript).
Новое окно
Новая вкладка
-- или --
источник
источник
Вы можете использовать трюк с
form
:демоверсия jsFiddle
источник
name
вvalue
качестве значения ключа и в качестве параметра все параметры внутри параметров запроса. А затем отправьте формуa
тега вместо формы и использования.click()
метода jQuery для его «отправки». проверьте мой ответЭто не имеет ничего общего с настройками браузера, если вы пытаетесь открыть новую вкладку из пользовательской функции.
На этой странице откройте консоль JavaScript и введите:
И он будет пытаться открыть всплывающее окно независимо от ваших настроек, потому что «щелчок» происходит от пользовательского действия.
Чтобы вести себя как настоящий «щелчок мышью» по ссылке, вам нужно следовать совету @ spirinvladimir и действительно создать его:
Вот полный пример (не пытайтесь сделать это в jsFiddle или аналогичных онлайн-редакторах, так как он не позволит вам перенаправлять на внешние страницы оттуда):
источник
w = window.open("placeholder"); $.ajax(...ajax call that returns the url...) success (...w.location = data.url...)
согласно theandystratton.com/2012/…источник
JQuery
JS
источник
Или вы можете просто создать элемент ссылки и щелкнуть по нему ...
Это не должно быть заблокировано никакими блокировщиками всплывающих окон ... Надеюсь.
источник
На этот вопрос есть ответ, и его нет.
Шаг 1: Создайте невидимую ссылку:
<a id="yourId" href="yourlink.html" target="_blank" style="display: none;"></a>
Шаг 2: Нажмите на эту ссылку программно:
document.getElementById("yourId").click();
Ну вот! Работает шарм для меня.
источник
Я исследовал много информации о том, как открыть новую вкладку и остаться на той же вкладке. Я нашел один маленький трюк, чтобы сделать это. Предположим, у вас есть URL, который вам нужно открыть - newUrl и старый url - currentUrl , на котором вы должны остаться после открытия новой вкладки. Код JS будет выглядеть примерно так:
источник
Как насчет создания атрибута as as
<a>
со значением as и_blank
target
url
href
отображения стиля : скрытого с дочерним элементом? Затем добавьте его в DOM и запустите событие click для дочернего элемента.ОБНОВИТЬ
Это не работает Браузер предотвращает поведение по умолчанию. Он может быть запущен программно, но не соответствует поведению по умолчанию.
Проверьте и убедитесь сами: http://jsfiddle.net/4S4ET/
источник
Открытие новой вкладки из расширения Firefox (Mozilla) выглядит следующим образом:
источник
Этот способ аналогичен приведенному выше решению, но реализован по-другому
.social_icon -> некоторый класс с CSS
источник
Это может быть взломом, но в Firefox, если вы укажете третий параметр 'fullscreen = yes', откроется новое новое окно.
Например,
Кажется, на самом деле переопределить настройки браузера.
источник
это работа для меня, просто предотвратить событие, добавить URL-адрес, а
<a>
tag
затем вызвать событие click на этомtag
.источник
window.open(url)
Откроется URL в новом браузере Tab. Ниже JS альтернатива емуВот рабочий пример (фрагменты stackoverflow не позволяют открыть новую вкладку)
источник
Открывать ли URL-адрес в новой вкладке или в новом окне, фактически зависит от настроек браузера пользователя. Нет способа переопределить его в JavaScript.
window.open()
ведет себя по-разному в зависимости от того, как он используется. Если он вызывается как прямой результат действия пользователя , скажем, нажатия кнопки, он должен нормально работать и открыть новую вкладку (или окно):Однако, если вы попытаетесь открыть новую вкладку из обратного вызова AJAX-запроса , браузер заблокирует ее, так как это было прямое действие пользователя.
Чтобы обойти блокировку всплывающих окон и открыть новую вкладку из обратного вызова, вот небольшой взлом :
источник
Я пробовал таким образом, и, кажется, работает нормально
Я нашел много рабочих примеров здесь:
http://www.gtalbot.org/FirefoxSection/Popup/PopupAndFirefox.html#TestPopupControl
источник
Я собираюсь несколько согласиться с человеком, который написал (перефразировал здесь): «Для ссылки на существующей веб-странице браузер всегда будет открывать ссылку в новой вкладке, если новая страница является частью того же веб-сайта, что и существующая веб-страница. " По крайней мере, для меня это «общее правило» работает в Chrome, Firefox, Opera, IE, Safari, SeaMonkey и Konqueror.
Во всяком случае, есть менее сложный способ воспользоваться тем, что представил другой человек. Предположим, что мы говорим о вашем собственном веб-сайте («thissite.com» ниже), где вы хотите контролировать действия браузера, а затем, ниже, вы хотите, чтобы «specialpage.htm» был ПУСТОЙ, без HTML вообще ( экономит время отправки данных с сервера!).
источник
Если вы хотите открыть только внешние ссылки (ссылки, которые ведут на другие сайты), тогда этот фрагмент JavaScript / jQuery работает хорошо:
источник
Браузер всегда будет открывать ссылку в новой вкладке, если ссылка находится в том же домене (на том же веб-сайте). Если ссылка находится на другом домене, она откроется в новой вкладке / окне, в зависимости от настроек браузера.
Итак, согласно этому, мы можем использовать:
И добавьте немного кода jQuery:
Итак, сначала откройте новое окно на том же веб-сайте с целью _blank (оно откроет его в новой вкладке), а затем откройте нужный веб-сайт в этом новом окне.
источник