Pregunta

Estoy intentando abrir una nueva ventana de esta manera:

$('#wrapper').click(function() {
    window.setTimeout(function() {
        //alert('hi');
        window.open("http://example.com", "ExternalLinks", "resizable=yes, scrollbars=yes, status=yes");
    }, 1000);
});

Esto funciona en Firefox, pero no en Chrome o Safari (hasta ahora, acabo de prueba en un Mac). Las obras alert() en todos los navegadores, por lo que no parece ser algo prevenir la window.open de ejecutar en Safari / Chrome. Por otra parte, si quito el setTimeout y simplemente llamar a la window.open entonces funciona en todos los navegadores 3. Es casi como si el window.open está anidado demasiado lejos del evento click, entonces no funciona en Safari / Chrome.

Así que ya saben, tengo una página web todo-Flash y estoy tratando de conseguir enlaces externos se abra en una nueva ventana, por lo que estoy leyendo la etiqueta de hash en la dirección URL (por ejemplo, htp:. // ejemplo. com / # / facebook /) y si coincide con ciertos productos, y estoy llamando window.open para abrir una URL específica. No tengo acceso a la fuente de flash, o habría manejar esta allí.

¿Alguna idea?

¿Fue útil?

Solución

Safari / Chrome han incorporado en los bloqueadores de ventanas emergentes que parar esto del trabajo. La única javascript que se le permite abrir una nueva ventana en Safari / Chrome es javascript unido directamente al hacer clic manipuladores (y otros manipuladores de entrada de usuario directo). En las versiones anteriores de personas se dieron cuenta algunas maneras de hacer trampa (como la generación de algún otro elemento - una forma o div - y que simulan la entrada del usuario con javascript), pero las versiones más nuevas son más inteligentes acerca de la detección de este. Me gustaría recomendar re-configurar las cosas para que no se utiliza una ventana emergente retardada -. Que es el tipo de cosas que por lo general puede ser irritante a un usuario después de todo

Otros consejos

Tengo todo esto comprobando el valor de retorno de window.open () para no definidos. Si eso es cierto alerta de llamada () con un mensaje para el usuario para desactivar el bloqueo de ventanas emergentes.

var myWin = window.open([args]);

if (myWin == undefined)
   alert('Please disable your popup blocker');

Otra solución
Sólo tiene que abrir una ventana emergente con opciones de Aceptar y Cancelar y adjuntar el window.open acción
al botón de aceptar y lo hará obras. Funcionó para mí ...

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