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