2010-09-09 25 views
9

tengo una ventana emergente y en esa página que tiene el código siguiente en el cuerpo.HTML JavaScript para abrir una nueva ventana y cerrar la ventana actual

<a href="http://www.somesite.com" target="_blank" onClick="javascript:window.close()"><img src="...something"/></a> 

El propósito es tener esta ventana estrecha emergente cuando un usuario hace clic en el enlace de la imagen, y abrir una nueva página y ser dirigido a http://www.somesite.com.

Funciona en IE y Chrome, pero no en Firefox. La ventana emergente se cierra pero no se abre ninguna ventana nueva.

¿Alguna idea?

+1

Esto se ha hecho antes: http://stackoverflow.com/questions/760422/ – user123444555621

+1

@ Pumbaa80 - Eso no es lo que OP preguntó. Esa pregunta se trata de por qué una ventana no se cierra. La ventana de OP se cerrará, pero no abrirá una nueva. – Ender

+0

Derecha. Perdón, no leí a fondo. – user123444555621

Respuesta

12

Sí, puede repro esto - interesante. setTimeout obras alrededor de él:

onClick="javascript: setTimeout(window.close, 10);" 

solo puedo suponer que una vez que se cierra la ventana (lo que ocurre antes de que el hipervínculo es seguido) Firefox deja de procesar esa página.

Editar: mejor que sea de 10 ms de retardo - 1ms con Chrome no se cierra la ventana.

+0

funciona, gracias, supongo que tienes razón, es probable que simplemente dejes de ejecutar otra operación una vez que esté cerrada. tiene sentido ~ – Eatdoku

2

Cuando agrega alguna funcionalidad al evento clic de un elemento mediante javascript, esa funcionalidad se ejecuta antes del evento clic predeterminado (en este caso, abrir una página nueva), para permitir la posibilidad de interceptar y anular el valor predeterminado evento. El comportamiento predeterminado solo se ejecutará cuando y si el evento devuelve un valor booleano de verdadero.

En este caso, la funcionalidad adicional sería cerrar la ventana y mi suposición es que Firefox elige interpretar esto como "todos hemos terminado aquí", por lo que el evento click nunca devuelve verdadero, y por lo tanto la página nueva nunca se abre

sugerencia de utilizar un corto tiempo de espera que permitiría el evento click para regresar cierto antes de la ventana está cerrada, permitiendo así que la nueva ventana se abra de Evgeny.

2

la cuestión se resuelve realmente para el primer partido pero no ayudó a mi problema (no deseado: las nuevas ventanas en Firefox mantienen el mismo tamaño que la ventana emergente actual). así que encontramos siguiente solución:

function whenClicked() 
{ 
    window.close(); 
    opener.location.href = "http://www.somesite.com"; 

} 

o esto si el ppage debe abrir en una nueva pestaña:

function whenClicked() 
{ 
    window.close(); 
    opener.open(http://www.somesite.com, '_blank'); 
} 
+0

Solución simple pero elegante que no hace mella en tiempos de espera. La duración del retraso es difícil de adivinar para adaptarse a todos los entornos. – AbelSurace

Cuestiones relacionadas