關(guān)于事件監(jiān)聽/添加事件句柄

IE下:

//添加事件句柄
function(oELement,sEvent,fnHandler){
  oELement.attachEvent('on' + sEvent,fnHandler);

//取消事件句柄
function(oElement,sEvent,fnHandler){
  oElement.detachEvent('on' + sEvent,fnHandler);
}

其他瀏覽器下(當(dāng)然,只有IE8及更早的版本不支持,Opera 7.0 及 Opera 更早版本也不支持):

//添加事件句柄
function(oELement,sEvent,fnHandler){
  oElement.addEventListener(sEvent,fnHandler,false);
}

//取消事件句柄
function(oELement,sEvent,fnHandler){
  oElement.removeEventListener(sEvent,fnHandler,false);
}

原因:

事件觸發(fā)順序有兩種:事件捕獲與事件冒泡。
??1.冒泡型事件:事件按照從最特定的事件目標(biāo)到最不特定的事件目標(biāo)(document對(duì)象)的順序觸發(fā)。
??2.捕獲型事件(event capturing):事件從最不精確的對(duì)象(document 對(duì)象)開始觸發(fā),然后到最精確(也可以在窗口級(jí)別捕獲事件,不過(guò)必須由開發(fā)人員特別指定)。
??Chrome瀏覽器支持事件捕獲與事件冒泡,添加事件句柄時(shí),默認(rèn)為true,執(zhí)行事件捕獲,設(shè)置為false,為事件冒泡。而IE只支持事件冒泡,因此添加事件句柄的方法不同。

兼容性寫法:

<script type="text/javascript">
var EventUtil = {
    addHandler: function (oElement, sEvent, fnHandler) {
        oElement.addEventListener ? oElement.addEventListener(sEvent, fnHandler, false) : oElement.attachEvent("on" + sEvent, fnHandler)    
    },
    removeHandler: function (oElement, sEvent, fnHandler) {
        oElement.removeEventListener ? oElement.removeEventListener(sEvent, fnHandler, false) : oElement.detachEvent("on" + sEvent, fnHandler)
    },
    addLoadHandler: function (fnHandler) {
        this.addHandler(window, "load", fnHandler)
    }
}
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以下文章為轉(zhuǎn)載,對(duì)理解JavaScript中的事件處理機(jī)制很有幫助,淺顯易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy閱讀 3,175評(píng)論 1 10
  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔、瀏覽器、元素或與之相關(guān)的對(duì)象發(fā)...
    劼哥stone閱讀 1,336評(píng)論 3 11
  • 基本概念 事件是一些特定動(dòng)作發(fā)生時(shí)所發(fā)出的信號(hào),JavaScript中的事件是可以被 JavaScript 偵測(cè)到...
    Zd_silent閱讀 565評(píng)論 0 1
  • 一、問答 1. dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerHTML: 也就是從對(duì)象...
    饑人谷_羅偉恩閱讀 702評(píng)論 0 2
  • 靜靜手繪閱讀 1,017評(píng)論 0 1

友情鏈接更多精彩內(nèi)容