Pregunta

¿Hay una buena forma de determinar si una persona tiene un bloqueador de ventanas emergentes habilitado? Necesito mantener una aplicación web que, desafortunadamente, tiene toneladas de ventanas emergentes y debo comprobar si el usuario tiene habilitados los bloqueadores de ventanas emergentes.

La única forma que he encontrado para hacer esto es abrir una ventana desde javascript, verificar si está abierta para determinar si un bloqueador está habilitado y luego cerrarlo de inmediato.

Esto es un poco molesto porque los usuarios que no lo tienen habilitados ven un pequeño destello en la pantalla cuando la ventana se abre y se cierra de inmediato.

¿Existen otros métodos no intrusivos para lograr esto?

¿Fue útil?

Solución

Lea Detecte un bloqueador de ventanas emergentes usando Javascript : / p>

Básicamente, comprueba si el método 'window.open' devuelve un identificador a una ventana recién abierta.

Se parece a esto:

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

Otros consejos

Como han dicho otros, tendrás que probarlo y verlo, pero verificando que el objeto de la ventana resultante no sea " falsy " no es suficiente para todos los navegadores.

Opera todavía devuelve un objeto Window cuando se bloquea una ventana emergente, por lo que debe examinar el objeto lo suficiente para determinar si es una ventana real:

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

Como han comentado otros, la única forma de averiguarlo es probarlo.

Sin embargo, una buena respuesta aproximada a la pregunta "es un bloqueador de ventanas emergentes instalado" es, en estos días, "sí". Todos los navegadores recientes bloquearán sus ventanas emergentes de forma predeterminada, por lo que será mejor que diseñe su aplicación para enfrentar esto con elegancia. Es decir, no intente abrir window.open excepto en reacción a una interacción del usuario (normalmente con un clic), y estará bien.

No creo que haya ninguna forma de detectar esto sin intentar abrir una ventana, ya que los bloqueadores de ventanas emergentes no agregan nada que pueda ser interrogado en JS.

Las ventanas emergentes que se abren en respuesta a una acción de un usuario & # 8212; como hacer clic en un enlace & # 8212; no deben ser bloqueadas por bloqueadores de ventanas emergentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top