Como buena práctica, creo que es una buena idea probar si una ventana emergente fue bloqueada y tomar medidas por si acaso. Debe saber que window.open tiene un valor de retorno, y ese valor puede ser nulo si la acción falla. Por ejemplo, en el siguiente código:
function pop(url,w,h) {
n=window.open(url,'_blank','toolbar=0,location=0,directories=0,status=1,menubar=0,titlebar=0,scrollbars=1,resizable=1,width='+w+',height='+h);
if(n==null) {
return true;
}
return false;
}
si la ventana emergente está bloqueada, window.open devolverá nulo. Entonces la función devolverá falso.
Como ejemplo, imagine llamar a esta función directamente desde cualquier enlace con target="_blank"
: si la ventana emergente se abre con éxito, el retorno
false
bloqueará la acción del enlace; de lo contrario, si la ventana emergente está bloqueada, el retorno true
permitirá el comportamiento predeterminado (abrir una nueva ventana en blanco) y continuar .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
De esta manera, tendrá una ventana emergente si funciona, y una ventana _blank si no.
Si la ventana emergente no se abre, puede:
- abra una ventana en blanco como en el ejemplo y continúe
- abrir una ventana emergente falsa (un iframe dentro de la página)
- informar al usuario ("permita ventanas emergentes para este sitio")
- abra una ventana en blanco y luego informe al usuario, etc.