Обнаружение всплывающих окон перед входом пользователя - PullRequest
6 голосов
/ 30 октября 2008

Есть ли хороший способ определить, включен ли для пользователя блокировщик всплывающих окон? Мне нужно поддерживать веб-приложение, в котором, к сожалению, есть множество всплывающих окон, и мне нужно проверить, включен ли у пользователя блокировщик всплывающих окон.

Единственный способ найти это - открыть окно из javascript, проверить, открыто ли оно, чтобы определить, включен ли блокировщик, и сразу же закрыть его.

Это немного раздражает, так как пользователи, у которых он не включен, видят небольшую вспышку на экране, когда окно открывается и закрывается сразу.

Существуют ли другие ненавязчивые методы для достижения этой цели?

Ответы [ 5 ]

6 голосов
/ 30 октября 2008

Чтение Обнаружение блокировщика всплывающих окон с использованием Javascript :

По сути, вы проверяете, возвращает ли метод 'window.open' дескриптор недавно открытого окна.

выглядит так:

var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
if(mine)
    var popUpsBlocked = false
else
    var popUpsBlocked = true
mine.close()
3 голосов
/ 30 октября 2008

Как уже говорили другие, вам придется попробовать и посмотреть, но проверка на то, что полученный оконный объект не является "ложным", недостаточна для всех браузеров.

Opera по-прежнему возвращает объект Window, когда всплывающее окно заблокировано, поэтому вы должны достаточно проверить объект, чтобы определить, является ли оно реальным окном:

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");
2 голосов
/ 30 октября 2008

Как прокомментировали другие, единственный способ узнать наверняка - это попробовать.

Однако, хороший примерный ответ на вопрос «установлен ли блокировщик всплывающих окон» в наши дни «да». Все последние браузеры по умолчанию будут блокировать ваши всплывающие окна, поэтому вам лучше спроектировать свое приложение, чтобы изящно справиться с этим. А именно, не пытайтесь открыть window.open, за исключением реакции на взаимодействие с пользователем (как правило, по клику), и все будет в порядке.

1 голос
/ 30 октября 2008

Я не думаю, что есть какой-либо способ обнаружить это, не пытаясь открыть окно, поскольку блокировщики всплывающих окон не добавляют ничего, что может быть опрошено в JS.

0 голосов
/ 30 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...