Является ли window.open() по-прежнему полезным в наши дни?

Я изучаю JS и наткнулся на функцию window.open(). Когда я тестировал его, кажется, что крупные браузеры, такие как Chrome, блокируют всплывающее окно. Для меня главная функция 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() по нескольким причинам

Вот несколько причин, по которым:

  • Просмотр вкладок обычно предпочтительнее открытия новых окон.
  • может не понравиться с расширениями/плагинами
  • тяжелые системные ресурсы