pagina - ventana emergente javascript
Detección de ventanas emergentes antes de que el usuario inicie sesión (5)
¿Hay una buena manera de determinar si una persona tiene habilitado un bloqueador de ventanas emergentes? Necesito mantener una aplicación web que desafortunadamente tiene un montón de ventanas emergentes a lo largo de ella y necesito verificar si el usuario tiene habilitados los bloqueadores de ventanas emergentes.
La única forma que he encontrado para hacerlo es abrir una ventana desde JavaScript, verificar si está abierto para determinar si un bloqueador está habilitado y luego cerrarlo de inmediato.
Esto es un poco molesto ya que los usuarios que no lo tienen habilitado ven un pequeño destello en la pantalla cuando la ventana se abre y se cierra de inmediato.
¿Hay algún otro método no molesto para lograr esto?
Como otros han comentado, la única forma de descubrirlo 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 manera predeterminada, por lo que será mejor que diseñe su aplicación para lidiar con esto con elegancia. A saber, no intentes window.open excepto en reacción a una interacción del usuario (normalmente al hacer clic), y estarás bien.
Las ventanas emergentes que se abren en respuesta a una acción de un usuario, como hacer clic en un enlace, no deben bloquearse con bloqueadores de ventanas emergentes.
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.
Como han dicho otros, tendrás que probarlo y verlo, pero comprobar que el objeto de la ventana resultante no sea "falsy" no es suficiente para todos los navegadores.
Opera aún devuelve un objeto Window
cuando se bloquea una ventana emergente, por lo que debe examinar el objeto lo suficiente para determinar si se trata de una ventana real:
var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");
Leer Detectar un bloqueador de pop-ups usando Javascript :
Básicamente se comprueba si el método ''window.open'' devuelve un manejador a una ventana recién abierta.
Se ve como 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()