以前寫 JavaScript 腳本時,事件都是采用
object.event = handler;
的方式初始化。這種方式對於 Internet Explorer、Mozilla/Firefox 和 Opera 來說很通用。但是有一個問題就是,這種方式只能一個事件對應一個事件處理過程。如果希望一個事件可以依次執行多個處理過程就不好用了。
但是 Internet Explorer 從 5.0 開始提供了一個 attachEvent 方法,使用這個方法,就可以給一個事件指派多個處理過程了。attachEvent 對於目前的 Opera 也適用。但是問題是 Mozilla/Firefox 並不支持這個方法。但是它支持另一個 addEventListener 方法,這個方法跟 attachEvent 差不多,也是用來給一個事件指派多個處理過程的。但是它們指派的事件有些區別,在 attachEvent 方法中,事件是以 “on” 開頭的,而在 addEventListener 中,事件沒有開頭的 “on”,另外 addEventListener 還有第三個參數,一般這個參數指定為 false 就可以了。
因此要想在你的程序中給一個事件指派多個處理過程的話,只要首先判斷一下瀏覽器,然后根據不同的瀏覽器,選擇使用 attachEvent 還是 addEventListener 就可以了。實例如下:
if (window.attachEvent) {
window.attachEvent("onload", remove);
} else if (window.addEventListener) {
window.addEventListener("load", remove, false);
}
function remove() {
var div = document.getElementByIdx_x("divprogressbar");
document.body.removeChild(div);
}
=============或者也可以用
if (document.all){window.attachEvent('onload',remove)}//IE
else{window.addEventListener('load',remove,false);} //FireFox
注意:attachEvent 所指派的多個過程的執行順序是隨機的,所以這幾個過程之間不要有順序依賴。另外 attachEvent 和 addEventListener 不僅僅適用於 window 對象,其他的一些對象也支持該方法。