2011-01-10 19 views
6

Olay nesnesinde olay normalleştirmesi için iyi bir kaynak arıyorum. Bunu kendim yapmaya çalışıyorum ama bir şeyleri özleyeceğim gibi hissediyorum.Çapraz Tarayıcı Olay nesnesi normalleştirme?

Şimdiye kadar sahip olduğum şeyler, bir şey özlediğimi söyle.

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; 
}; 

Tam bir normalleştirme işlevi gören oldu mu? Bir şey mi kaçırdım? Eğer bir eklemem gerekiyor en azından böylece,

e.layerX sadece konumlandırılmış elemanları üzerinde çalışır:

+0

Eğer jQuery kullanıyor musunuz? Bu sizin için bunu halleder ... –

+4

@Brad Christie Bu öğrenme amaçlıdır ve sadece olay normalizasyonu için kodumu şişirmemeyi tercih ediyorum – qwertymk

+5

@ qwertymk Katılıyorum. İnsanlar, insanlara bilinen her kütüphaneyi, bunlardan sadece bir tek özellik kullanmak için çok hızlıdır. Bu gerçekten üzücü. – crush

cevap

2

sizin koduyla başka sorun var (W3C modeli değil IE için gidiyoruz Söylemeye gerek yok) "konum: göreceli" elemanınızın çalışması için. İkincisi e.offsetX sadece IE8 ve daha sonra'da doğru bir şekilde çalışır, bu yüzden her iki şekilde de kullanmaktan kaçınmanız gerekir (şu anda bunları kullanıyorum, ancak bu yalnızca belirli tarayıcılarda çalışmalıdır).

İlgili konular