2011-01-10 24 views
6

我正在尋找關於事件對象的事件規範化的好資源。我試圖自己做,但我一直覺得我會錯過一些東西。跨瀏覽器事件對象規範化?

這是我到目前爲止,告訴我,如果我錯過了任何東西。

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

有沒有人看過完整的標準化函數?我錯過了什麼嗎? (不用說,我們要去的W3C模型不IE)

+0

你是否反對使用jQuery?這將爲你照顧... – 2011-01-10 02:44:15

回答

2

還有一個問題是你的代碼:

e.layerX僅適用於定位元素,所以在最起碼你需要添加一個「職位:相對」你的元素的功能。其次,e.offsetX只能在IE8和更高版本中正常工作,所以你應該不要使用它(儘管我現在正在使用它們,但這隻需要在特定的瀏覽器中工作)。