Я изучаю JS и наткнулся на функцию window.open()
. Когда я тестировал его, кажется, что крупные браузеры, такие как Chrome, блокируют всплывающее окно. Для меня главная функция open()
больше не нужна. Так ли эта функция все еще используется в текущей практике?
Является ли window.open() по-прежнему полезным в наши дни?
Ответ 1
Я думаю, что Chrome блокирует только window.open
, если ему не предшествует действие пользователя. Например, если у вас есть элемент, атрибут onclick
сопоставляется с функцией...
function clickedButton() {
window.open(...);
}
Это сработает. Хотя это....
function clickedButton(){
setTimeout(function(){
window.open(...);
})
}
не будет.
Так что да, это все же полезно, если вы можете настроить свое приложение таким образом, чтобы всплывающие окна открывались только в ответ на действие пользователя.
Хотя верно то, что в целом открытие новых окон - плохая идея по причинам, упомянутым Jonathan.Brink, я использовал их раньше для аутентификации. Например, для входа в систему через Facebook требуется открыть новую вкладку или открыть новое окно с их URL (iframe не работает). Когда он снова попадает на мой сайт в своем обратном вызове, я закрываю окно и обновляю (отзывчивый) веб-сайт с помощью новой информации для входа. Закрытие новых вкладок кажется... странным.
Ответ 2
Для некоторых внутренних приложений это может быть полезно, но рекомендации для Mozilla рекомендуют:
Вообще говоря, предпочтительно избегать прибегать к window.open() по нескольким причинам
Вот несколько причин, по которым:
- Просмотр вкладок обычно предпочтительнее открытия новых окон.
- может не понравиться с расширениями/плагинами
- тяжелые системные ресурсы