2009-02-02 11 views
7

He estado buscando esto por un tiempo, pero no tengo ninguna explicación.¿Por qué el evento "onmouseover" utiliza "return true" para evitar el comportamiento predeterminado?

Por "onclick" y otros eventos en Javascript, el controlador de eventos de regresar falsa significa "prevenir la acción por defecto". Sin embargo, hay una excepción para "onmouseover". Para "onmouseover", al devolver true significa "evitar la acción predeterminada".

¿Por qué hay un caso excepcional tan extraño para "onmouseover"?

Respuesta

6

En lugar de utilizar el retorno falsa/cierto para prevenir comportamiento predeterminado de eventos, utilice el método por defecto/atributo en el objeto de evento:

elem.onmouseover = function(e) { 
    if (!e) var e = window.event; // IE 
    if(e.preventDefault) { 
     e.preventDefault(); 
    } else { 
     e.returnValue = false; // IE 
    } 
} 
2

quién sabe por qué realmente. Justo como está: devuelve TRUE desde onmouseover para evitar que la url aparezca en la barra de estado, lo que sería el comportamiento predeterminado.

3

Por lo que sé, devolver true para evitar que la URL de un enlace se muestre en la barra de estado es una característica específica de IE (mis-). Y tratando de entender por qué IE hace las cosas de la manera en que lo hace es a menudo una causa perdida, solo convivir con eso ...

Cuestiones relacionadas