2011-01-10 12 views
6

Estoy buscando un buen recurso sobre la normalización de eventos en el objeto del evento. Intento hacerlo yo mismo, pero sigo sintiendo que voy a extrañar algo.Navegación cruzada ¿Normalización del objeto de evento?

Esto es lo que tengo hasta ahora, dime si me perdí algo.

var eFix = function(e) { 
    e = e || window.event; 
    e.target = e.target || e.srcElement; 
    e.offsetX = e.offsetX || e.layerX; 
    e.offsetY = e.offsetY || e.layerY; 
    e.relatedTarget = e.relatedTarget || 
     e.type == 'mouseover' ? e.fromElement : e.toElement; 
    e.target = e.target || e.srcElement; 
    if (target.nodeType === 3) target = target.parentNode; //Safari bug 
    return e; 
}; 

¿Alguien ha visto una función de normalización completa? ¿Yo me perdí algo? (No hace falta decir que vamos para el modelo W3C no IE)

+0

¿Estás en contra de usar jQuery? Eso se encargaría de esto para usted ... –

+4

@Brad Christie Es para fines de aprendizaje y prefiero no ensuciar mi código solo para la normalización del evento – qwertymk

+5

@qwertymk Estoy de acuerdo. Las personas son demasiado rápidas para incluir todas las bibliotecas conocidas por el hombre simplemente para usar una sola característica de él. Es triste realmente – crush

Respuesta

2

hay otro problema con su código:

e.layerX sólo funciona en posicionados elementos, por lo que al menos es necesario agregar una "posición: relativa" a su elemento para funcionar. En segundo lugar, e.offsetX solo funciona correctamente en IE8 y posterior, por lo que probablemente debería abstenerse de utilizarlo de cualquier manera (aunque los estoy usando ahora mismo, pero esto solo tiene que funcionar en navegadores específicos).

Cuestiones relacionadas