2011-05-31 17 views
14

¿Qué está causando que algunos navegadores vean mi código como no solicitado?Evitar legalmente el bloqueo de ventanas emergentes

Tengo un sitio web dedicado a ayudar a las personas con sesiones interactivas. Comienza cuando el usuario hace clic en [Comenzar], por lo que esta es una acción consentida. Esto debe (1) abrir una ventana emergente, mientras que (2) la reorientación de la primera página a una página final de la siguiente manera:

<head> 
<SCRIPT language="JavaScript"> 
     function openwindow(){window.open("{INTERACTION}","interaction","resizable=0,width=800,height=600,status=0");}</SCRIPT> 
</head> 
<body> 
<FORM action="end.php" method="{METHOD}" > 
<input type="submit" class="button" 
     onClick="javascript: openwindow()" 
     value="Begin" /> 
</FORM> 
</body> 

Como se ha dicho, esto no está tratando de abrir una ventana emergente no solicitada, pero algunas cepas de IE y Chrome aparece tratarlo como tal. He estado tratando de obtener una solución, recientemente digiriendo this post.

En ella comenta bobince

estos días, usted realmente no necesita hacer la pregunta “fue mi emergente no solicitada bloqueado?”, Porque la respuesta es siempre “sí” - todos los principales navegadores tienen el bloqueador de pop-ups activado por defecto. El mejor enfoque es solamente window.open() en respuesta a un clic directo, que casi siempre está permitido. Estoy bastante contento de aceptar este principio porque simplemente quiero que se abra mi ventana emergente.

¿Qué está haciendo que algunos navegadores vean mi código como no solicitado?

Agradecería cualquier ayuda que pudiera darme. (Como habrás adivinado, el lado del cliente no es mi bolsa y este tema me ha estado molestando por siglos).

Muchas gracias de antemano (y los dedos cruzados) Giles

+0

Por lo que vale, tu ejemplo funciona para mí en todos los navegadores principales. ¿Dónde no está funcionando para ti? Puede que aún tenga problemas con bloqueadores de script o ventanas emergentes de draconianos de terceros, pero ese es siempre el caso.Lo mejor es proporcionar un enlace normal a su página principal de interacción, de modo que pueda seguir utilizándose sin ventanas emergentes. (Personalmente, siempre usaré eso de todos modos ya que soy uno de los muchos usuarios que los desprecian por completo). – bobince

+0

¡Guau! gracias por probar He estado recibiendo informes de ie9 en los bloques de win7 con solo un mensaje de advertencia momentáneo que es fácil para la mayoría de supervisar – giles

+0

trabajando para mí en IE9/Win7 FWIW. – bobince

Respuesta

6

No hay mucho que pueda hacer. Puede solicitar a los usuarios que desactiven los bloqueadores de elementos emergentes o informarles que un bloqueador de elementos emergentes está habilitado al marcar el objeto de ventana ref devuelto por window.open()

por ej.

var w = window.open('http://domain.com'); 
if(!w) { 
    //an alert in this example 
    alert('oops..seems like a pop-up blocker is enabled. Please disable'); 
} 

podría encontrar otra manera y probar lo que sugiere Brad.

+0

Interesante ... ¿Funcionaría esto para todas las instancias de bloqueo? ... (en caso afirmativo, ¿podría construir una instrucción if - else para abrir una ventana emergente o devolver una alerta?) – giles

+0

si se bloquea una ventana emergente no debería obtener una referencia a la nueva ventana. No estoy 100% seguro pero puedes probar el código. Puede mostrar una alerta o usar lo que sugiere Brad en su respuesta – Andreas

+0

Verificar '! W' no es suficiente. Ver: http://stackoverflow.com/a/1089792/103842 –

4

No hay nada que pueda hacer al respecto. Algunos bloqueadores de ventanas emergentes todavía bloquean todo, incluso en respuesta a un clic del usuario. Lo mejor que puede hacer es sugerir a sus usuarios que apaguen los bloqueadores de ventanas emergentes o que busquen una manera diferente de hacer lo que desea hacer. Un método popular es el div que aparece encima de todos los demás en su página, como Lightbox.

Hay many jQuery plugins que lo hacen fácil.

+0

+1. Facebox es una gran solución. http://defunkt.io/facebox/ –

+0

OK Veo su punto, pero ¿esta solución es segura? Muchos de nuestros usuarios todavía están alrededor de IE6 – giles

+0

@giles, jQuery generalmente funciona bien con IE6, y me imagino que la mayoría de los complementos también lo hacen. Pruébalo y, si no funciona, prueba con un complemento diferente o modifica tu enfoque. – Brad

0

que tiene (al menos?) 2 opciones para hacer frente a este:

  • si quiere seguir usando ventanas emergentes, mostrará una advertencia muy visible para los usuarios, señalando que las instrucciones sobre cómo configurar su navegador para incluir en la lista blanca su dominio (como los banners que aparecen en la parte superior de StackOverlow.com cuando obtiene nuevos privilegios, o incluso como los banners que Chrome muestra para las acciones, también están basados ​​en la web);
  • usa un iFrame y carga su contenido en función del clic de tu usuario.
Cuestiones relacionadas