Detecção pop -up antes de fazer login do usuário
-
05-07-2019 - |
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?
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.