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
події, відкривати їх у нових вікнах при використанні з консолі браузера ( як це відзначають інші люди ) та відкривати їх у нових вікнах, коли задано шириною та висотою.
Підсумок
Різні браузери реалізують поведінку по- window.open
різному щодо переваг браузера користувачів. Ви не можете очікувати, що однакова поведінка window.open
буде дійсною для всіх Internet Explorer, Firefox та Chrome через різні способи роботи з налаштуваннями браузера користувача.
Додаткове читання