2015-12-23 3 views
10

Я изучаю JS и споткнулся через функцию window.open(). Когда я тестировал его, кажется, что крупные браузеры, такие как Chrome, блокируют всплывающее окно. Для меня основная функция open() больше не нужна. Так ли эта функция все еще используется в текущей практике?Является ли window.open() полезным в наши дни?

+1

Это очень полезно, это единственный способ просто открыть пустое окно, но пользователь должен создать экземпляр его, нажав что-то и т.д. в противном случае это то, что называется * «раздражающим всплывающим окном» *, и большинство браузеров пытаются их заблокировать. – adeneo

+0

Как ответил @ sg.cc, хром делает много различий в действиях, если они инициированы событием взаимодействия с пользователем (см., Как он ведет себя с полноэкранными запросами). window.open вообще отлично, если вы используете его правильно, но '

ответ

9

Я думаю, что Chrome только блокирует window.open, если ему не предшествует действие пользователя. Например, если у вас есть элемент, onclick атрибут сопоставляется с функцией ...

function clickedButton() { 
    window.open(...); 
} 

Это будет работать. Хотя это ...

function clickedButton(){ 
    setTimeout(function(){ 
    window.open(...); 
    }) 
} 

не будет.

Да, это все же полезно, если вы можете настроить свое приложение таким образом, чтобы всплывающие окна открывались только в ответ на действие пользователя.

Хотя это правда, что в целом открытие новых окон - плохая идея по причинам, упомянутым Джонатаном.Brink, я использовал их раньше для аутентификации. Например, для входа в систему через Facebook требуется открыть новую вкладку или открыть новое окно с их URL (iframe не работает). Когда он снова попадает на мой сайт в своем обратном вызове, я закрываю окно и обновляю (отзывчивый) веб-сайт с помощью новой информации для входа. Закрытие новых вкладок кажется ... странным.

3

Для некоторых внутренних применений может быть полезным, но the Mozilla docs рекомендуем против него:

Вообще говоря, предпочтительно, чтобы не прибегать к window.open() по нескольким причинам

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

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

Эта цитата действительно не так уж полезна ... Почему бы не включить, почему они рекомендуют против нее? – 3ocene

+0

@Bern Цитата может быть нецелесообразной (без полного контекста, найденного по ссылке), но ссылка на очень авторитетный источник, который явно рекомендует избегать window.open(), это –

+0

. Тогда зачем включать цитату в первую очередь? – 3ocene

Смежные вопросы