Я изучаю JS и споткнулся через функцию window.open()
. Когда я тестировал его, кажется, что крупные браузеры, такие как Chrome, блокируют всплывающее окно. Для меня основная функция open()
больше не нужна. Так ли эта функция все еще используется в текущей практике?Является ли window.open() полезным в наши дни?
ответ
Я думаю, что Chrome только блокирует window.open
, если ему не предшествует действие пользователя. Например, если у вас есть элемент, onclick
атрибут сопоставляется с функцией ...
function clickedButton() {
window.open(...);
}
Это будет работать. Хотя это ...
function clickedButton(){
setTimeout(function(){
window.open(...);
})
}
не будет.
Да, это все же полезно, если вы можете настроить свое приложение таким образом, чтобы всплывающие окна открывались только в ответ на действие пользователя.
Хотя это правда, что в целом открытие новых окон - плохая идея по причинам, упомянутым Джонатаном.Brink, я использовал их раньше для аутентификации. Например, для входа в систему через Facebook требуется открыть новую вкладку или открыть новое окно с их URL (iframe не работает). Когда он снова попадает на мой сайт в своем обратном вызове, я закрываю окно и обновляю (отзывчивый) веб-сайт с помощью новой информации для входа. Закрытие новых вкладок кажется ... странным.
Для некоторых внутренних применений может быть полезным, но the Mozilla docs рекомендуем против него:
Вообще говоря, предпочтительно, чтобы не прибегать к window.open() по нескольким причинам
Вот несколько причин, почему:
- просмотр вкладок обычно предпочтительнее открытия новых окон
- не может играть хорошо с расширениями/плагинов
- тяжелых системных ресурсов
Эта цитата действительно не так уж полезна ... Почему бы не включить, почему они рекомендуют против нее? – 3ocene
@Bern Цитата может быть нецелесообразной (без полного контекста, найденного по ссылке), но ссылка на очень авторитетный источник, который явно рекомендует избегать window.open(), это –
. Тогда зачем включать цитату в первую очередь? – 3ocene
- 1. Является ли swf размером 350KB действительно приемлемым в наши дни?
- 2. Является ли modernizr.js еще полезным?
- 3. Является ли invoke исключения.fillInStacktrace полезным?
- 4. Стоит ли изучать классы Microsoft Foundation (MFC) в наши дни?
- 5. Является ли HttpContextWrapper всем этим .... полезным?
- 6. Является ли $ 1 полезным токеном в Lex?
- 7. Является ли наследование полезным в этом случае?
- 8. Является ли режим разлома Perl полезным?
- 9. Является ли отражение полезным для Android?
- 10. Является ли мое использование WCF асинк полезным?
- 11. Является ли ORM (Linq, Hibernate ...) действительно полезным?
- 12. Является ли Javascript полезным для изменения памяти?
- 13. Является ли toString() полезным только для отладки?
- 14. Является ли @ContextHierarchy полезным из сценария наследования?
- 15. Является ли доход полезным вне LINQ?
- 16. Является ли constexpr полезным для перегрузки
- 17. Является полезным растровым индексом
- 18. Ведущее подчеркивание, не рекомендуемое в наши дни для этикеток?
- 19. Неподвижная точка в алгоритме сжатия, широко используемом в наши дни
- 20. Почему новые сайты используют домен .io в наши дни?
- 21. Каковы самые крутые и современные области программирования в наши дни?
- 22. Какие языки в основном пользуются спросом в наши дни?
- 23. Как создать сайт для нескольких браузеров в наши дни?
- 24. Является ли волатильным полезным вообще в однопоточном приложении в Java?
- 25. Разве мы не используем jsss в наши дни?
- 26. Почему существует такой толчок для клиентских фреймворков в наши дни?
- 27. jQuery Data Binding - Какой популярный плагин в наши дни?
- 28. Является ли поезд/тест-сплит в неконтролируемом обучении необходимым/полезным?
- 29. Является ли проверка нулевого значения в массиве значимым/полезным?
- 30. Является ли метод DEFAULT toString в java действительно полезным?
Это очень полезно, это единственный способ просто открыть пустое окно, но пользователь должен создать экземпляр его, нажав что-то и т.д. в противном случае это то, что называется * «раздражающим всплывающим окном» *, и большинство браузеров пытаются их заблокировать. – adeneo
Как ответил @ sg.cc, хром делает много различий в действиях, если они инициированы событием взаимодействия с пользователем (см., Как он ведет себя с полноэкранными запросами). window.open вообще отлично, если вы используете его правильно, но '