2011-02-18 9 views
7

Tengo un problema que es solo un problema en IE8, vaya figura.IE8 ¿Qué es tiggering beforeunload event

tengo una etiqueta de anclaje con un atributo onclick

<a href="javascript:void(0);" onclick="foo();">Click Me</a> 

y luego foo se declara en otro lugar:

<script type="javascript/text"> 
    function foo(){ 
     //do some work 
     return false; 
    } 
</script> 

Después foo se llama, se está ejecutando mi manejador onbeforeunload, y no tengo idea porque

He tenido otras instancias, si la función foo no devuelve falso, desencadena el evento beforeunload en IE, pero incluso con esta función devolviendo false, todavía golpea mi controlador onbeforeunload y no puedo entender por qué.

¿Hay alguna manera de descubrir qué lo está desencadenando? He visto el objeto del evento dentro de mi controlador onbeforeunload, pero no parece que me proporcione información relevante.

¿Alguna idea?

Respuesta

7

cambiarlo a

<a href="#" onclick="return foo();">Click Me</a> 

o

<a href="#" onclick="foo();return false;">Click Me</a> 
+0

funciona El segundo método. ¿Puedes explicar por qué es diferente y luego devolver falso al final de la función foo? – MattoTodd

+0

Al devolver falso, se cancela el evento de clic y, por lo tanto, no se actualiza ni se descarga el documento. Si el primero no funciona, significaría que foo no devuelve falso en algunos casos. –

0

tuve este problema también en algunos de anclaje etiquetas que estaban siendo renderizadas por CK Editor. Fijo adjuntando un evento de clic a un DIV que rodeaba las etiquetas de anclaje en cuestión y se detuvo la propagación de eventos a la ventana:

$('div.cke_form_fix').on('click', function(e){ 
    e.stopPropagation(); 
});