2010-10-20 46 views
2

這是常識,Internet Explorer不支持事件傳遞給事件處理函數像這樣的:Internet Explorer 7/8支持正常事件傳遞,不需要window.event?

function clickHandler(e) { 
    // e is undefined in IE 
    e = e || window.event; 
{ 

對於今天我驚訝的是,我發現實際上它的作用。我忘了在我的一個函數中這樣做「e = e || window.event」技巧,但它在IE8中工作!

我用IE開發工具做了一些測試,e對象完全定義,甚至在IE7模式下也是如此。

我的問題是,我應該完全刪除window.event的東西,因爲我不關心8之前的IE版本?

回答

2

如果您分配使用DOM0財產方式的事件處理程序,那麼你仍然需要e = e || window.event;位,如果你嘗試,你會得到一個錯誤,訪問e屬性:

document.onclick = function(e) { 
    e.cancelBubble = true; // Error 
}; 

如果使用attachEvent那麼你是對的,事件參數提供給聽者功能:

document.attachEvent("onclick", function(e) { 
    e.cancelBubble = true; // No error 
}); 
+0

Thanks!很高興知道! – 2010-10-21 00:22:52