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
:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
Обратите внимание, что всплывающие окна открыты в новом окне, а не в новой вкладке.
Вы также можете протестировать эти фрагменты выше в 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, открытый в новом окне, а не на вкладке ):
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
Однако, тот же фрагмент кодавыше всегда будет открывать новую вкладку в Internet Explorer 11, если пользователи устанавливают вкладки в качестве настроек браузера, , даже не указывая ширину и высоту, вынуждает их открывать новое окно.
Так чтоПоведение window.open
в Chrome, по-видимому, заключается в открытии всплывающих окон на новой вкладке при использовании в событии onclick
, открытии их в новых окнах при использовании из консоли браузера (, как отмечали другие люди ) и открыть их в новомindows при указании ширины и высоты.
Сводка
Различные браузеры по-разному реализуют поведение window.open
в зависимости от предпочтений браузера пользователя. Вы не можете ожидать, что одно и то же поведение для window.open
будет истинным для всех Internet Explorer, Firefox и Chrome, из-за различных способов, которыми они обрабатывают настройки браузера пользователя.
Дополнительное чтение