2014-04-02 62 views
0

我有一個簡單計算的表單,並且我有一個用於偵聽submitsevents的.addEventListener。而且這個工作非常好,直到我發現IE7和IE8不支持這個功能,但是使用它自己的.attachEvent,我需要這個在這兩個瀏覽器中工作。.addEventListener和.attachEvent的正確用法

您可以在這裏看到小提琴http://jsfiddle.net/hbrovell/AGBnj/

我已經找到了很多解決方案,在那裏你檢查瀏覽器使用.addEventListener.attachEvent但我不能換我的頭周圍如何使用它。

例如,我將如何正確地實施這段代碼來挖掘?

function addEvent(element, eventName, callback) { 
if (element.addEventListener) { 
    element.addEventListener(eventName, callback, false); 
} else if (element.attachEvent) { 
    element.attachEvent("on" + eventName, callback); 
}} 

這段代碼中的elemet是我的代碼中的表單元素嗎?而eventName是提交事件?

我不能在這個項目上使用任何庫,所以我需要使用普通的JavaScript。

希望有人能給我一些關於如何做到這一點的指導。

+0

[「正確使用addEventListener()/ attachEvent()?」](http://stackoverflow.com/questions/2657182/correct-usage-of-addeventlistener-attachevent?rq = 1) – 13ruce1337

回答

0
var el = document.getElementById("my-el"), 
    action = function (e) { doStuff(); }, 
    eventName = "click"; 


// normal browsers 
el.addEventListener(eventName, action); 

// IE < 9 
el.attachEvent("on" + eventName, action); 

知道了,您應該能夠看到addEvent正在做什麼。

有一個非常大的但在那裏
什麼IE給你回來是非常不同的。
雖然其他瀏覽器爲您提供e事件參數,但IE不支持。
當其他瀏覽器使this被點擊/輸入的元素等時,IE不會。

addEvent對此無能爲力。
如果您只需要知道事件發生了,那麼這是100%的罰款。
如果您需要preventDefaultstopPropagation,或者您需要獲取事件信息,那麼該函數不足以處理它。

相關問題