|
以前寫 JavaScript 程序時(shí),事件都是采用
復(fù)制代碼 代碼如下:
object.event = handler;
的方式初始化。這種方式對于 InterNET Explorer、Mozilla/Firefox 和 Opera 來說很通用。但是有一個(gè)問題就是,這種方式只能一個(gè)事件對應(yīng)一個(gè)事件處理過程。如果希望一個(gè)事件可以依次執(zhí)行多個(gè)處理過程就不好用了。
但是 InterNET Explorer 從 5.0 開始提供了一個(gè) attachEvent 方法,使用這個(gè)方法,就可以給一個(gè)事件指派多個(gè)處理過程了。attachEvent 對于目前的 Opera 也適用。但是問題是 Mozilla/Firefox 并不支持這個(gè)方法。但是它支持另一個(gè) addEventListener 方法,這個(gè)方法跟 attachEvent 差不多,也是用來給一個(gè)事件指派多個(gè)處理過程的。但是它們指派的事件有些區(qū)別,在 attachEvent 方法中,事件是以 “on” 開頭的,而在 addEventListener 中,事件沒有開頭的 “on”,另外 addEventListener 還有第三個(gè)參數(shù),一般這個(gè)參數(shù)指定為 false 就可以了。
因此要想在你的程序中給一個(gè)事件指派多個(gè)處理過程的話,只要首先判斷一下瀏覽器,然后根據(jù)不同的瀏覽器,選擇使用 attachEvent 還是 addEventListener 就可以了。實(shí)例如下:
復(fù)制代碼 代碼如下:
if (document.all) {
window.attachEvent('onload', handler1);
window.attachEvent('onload', handler2);
}
else {
window.addEventListener('load', handler1, false);
window.addEventListener('load', handler2, false);
}
注意:attachEvent 所指派的多個(gè)過程的執(zhí)行順序是隨機(jī)的,所以這幾個(gè)過程之間不要有順序依賴。另外 attachEvent 和 addEventListener 不僅僅適用于 window 對象,其他的一些對象也支持該方法。
復(fù)制代碼 代碼如下:
function addEvent(obj, evenTypeName, fn){
if (obj.addEventListener){
obj.addEventListener(evenTypeName, fn, true);
return true;
} else if (obj.attachEvent){
return obj.attachEvent("on"+evenTypeName, fn);
} else {
return false;
}
}
JavaScript技術(shù):用JavaScript事件串連執(zhí)行多個(gè)處理過程的方法,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。