隨筆 - 28, 文章 - 0, 評論 - 3, 引用 - 0
          數(shù)據(jù)加載中……

          淺談window.attachEvent [轉(zhuǎn)]

          以前寫 JavaScript 腳本時,事件都是采用
          object.event = handler;
          的方式初始化。這種方式對于 Internet Explorer、Mozilla/Firefox 和 Opera 來說很通用。但是有一個問題就是,這種方式只能一個事件對應(yīng)一個事件處理過程。如果希望一個事件可以依次執(zhí)行多個處理過程就不好用了。

          但是 Internet Explorer 從 5.0 開始提供了一個 attachEvent 方法,使用這個方法,就可以給一個事件指派多個處理過程了。attachEvent 對于目前的 Opera 也適用。但是問題是 Mozilla/Firefox 并不支持這個方法。但是它支持另一個 addEventListener 方法,這個方法跟 attachEvent 差不多,也是用來給一個事件指派多個處理過程的。但是它們指派的事件有些區(qū)別,在 attachEvent 方法中,事件是以 “on” 開頭的,而在 addEventListener 中,事件沒有開頭的 “on”,另外 addEventListener 還有第三個參數(shù),一般這個參數(shù)指定為 false 就可以了。

          因此要想在你的程序中給一個事件指派多個處理過程的話,只要首先判斷一下瀏覽器,然后根據(jù)不同的瀏覽器,選擇使用 attachEvent 還是 addEventListener 就可以了。實例如下:

           

                      if (window.attachEvent) { 
                          window.attachEvent("onload", remove); 
                      } else if (window.addEventListener) { 
                          window.addEventListener("load", remove, false);   
                      }             
                      function remove() { 
                          var div = document.getElementById("divprogressbar"); 
                          document.body.removeChild(div); 
                      } 

          =============或者也可以用

          if (document.all){window.attachEvent('onload',remove)}//IE
          else{window.addEventListener('load',remove,false);} //FireFox

          注意:attachEvent 所指派的多個過程的執(zhí)行順序是隨機的,所以這幾個過程之間不要有順序依賴。另外 attachEvent 和 addEventListener 不僅僅適用于 window 對象,其他的一些對象也支持該方法。

          posted on 2010-01-21 12:42 Angle Wang 閱讀(1158) 評論(0)  編輯  收藏 所屬分類: JavaScript和jQuery


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 桐城市| 肥乡县| 高要市| 巴南区| 叙永县| 武城县| 彰武县| 乡城县| 江陵县| 玛纳斯县| 彰化市| 永顺县| 汾西县| 嘉禾县| 兴海县| 玉环县| 襄樊市| 东兰县| 澄迈县| 台中市| 延川县| 万山特区| 栾城县| 正镶白旗| 乌海市| 和林格尔县| 淮安市| 伊金霍洛旗| 南平市| 中超| 富宁县| 晋江市| 务川| 隆回县| 共和县| 东台市| 肥城市| 丽江市| 天气| 榆社县| 中方县|