Pergunta

Existe uma boa maneira de determinar se uma pessoa tem um bloqueador pop -up ativado? Preciso manter um aplicativo da Web que, infelizmente, tenha toneladas de pop -ups ao longo dele e preciso verificar se o usuário possui bloqueadores pop -up ativados.

A única maneira de fazer isso fazer isso é abrir uma janela do JavaScript, verifique se está aberto para determinar se um bloqueador está ativado e feche -o imediatamente.

Isso é um pouco irritante, pois os usuários que não o têm permitidos veem um pequeno flash na tela à medida que a janela se abre e fecha imediatamente.

Existem outros métodos não óbvios para realizar isso?

Foi útil?

Solução

Ler Detecte um bloqueador pop -up usando JavaScript:

Basicamente, você verifica se o método 'window.open' retorna uma alça para uma janela recém-inaugurada.

Se parece com isso:

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()

Outras dicas

Como outros disseram, você terá que tentar e ver, mas verificando o objeto de janela resultante ser não "falsy" não é suficiente para todos os navegadores.

Ópera ainda retorna um Window Objeto quando um pop -up é bloqueado, então você deve examinar o objeto o suficiente para determinar se é uma janela real:

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");

Como outros comentaram, a única maneira de descobrir com certeza é experimentá -lo.

No entanto, uma boa resposta aproximada para a pergunta "é um bloqueador pop-up instalado" hoje em dia, "sim". Todos os navegadores recentes bloquearão seus pop-ups por padrão, para que seja melhor projetar seu aplicativo para lidar com graciosamente com isso. Ou seja, não tente janela.pen, exceto em reação a uma interação do usuário (normalmente onClick), e você ficará bem.

Eu não acho que exista nenhuma maneira de detectar isso sem tentar abrir uma janela, pois os bloqueadores pop -up não adicionam nada que possa ser interrogado no JS.

Os pop -ups que são abertos em resposta a uma ação de um usuário - como clicar em um link - não devem ser bloqueados pelos bloqueadores pop -up.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top