跨瀏覽器的事件對象

由于ie和其它瀏覽器的區(qū)別,在對DOM進行事件注冊的和使用event對象的時候,需要一種快捷的封裝好的工具方法。

var EventUtil = {
  addHandler: function(element, type, handler) {
    if (element.addEventListener) { //dom2級事件處理程序
        element.addEventListener(element, type, handler);
    } else if (element.attachEvent) { //檢測ie的事件處理程序
        element.attachEvent('on' + type, handler);
    } else {
        element['on' + type] = handler; //dom0級事件處理程序
    }
  },
  
  getEvent: function(event) {
    return event ? event : window.event;
  },

  getTarget: function(event) {
    return event.target ? event.target : event.srcElement;
  },

  preventDefault: function(event) { //阻止默認(rèn)行為,比如鏈接的跳轉(zhuǎn),表單的提交
    if (event.preventDefault) {
        event.preventDefault();
    } else {
        event.returnValue = false; //ie下阻止默認(rèn)行為
    }
  },

  removeHandler: function(element, type, handler) {
    if (element.removeEventListener) {
        element.removeEventListener(element, type, handler);
    } else if (element.detachEvent) {
        element.detachEvent('on' + type, handler);
    } else {
        element['on' + type] == null;
    }
  },

//由于事件在dom層中傳播會造成事件捕捉和事件冒泡,這里直接在元素上添加事件而阻止其在  
  dom中傳播
  stopPropagation: function(event) {
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
  }
};

上面就是封裝的一個工具對象用法大概如下

oDiv.onclick = function(event) {
  event = EventUtil.getEvent(event);
  var target = event.getTarget(event);
  EventUtil.stopPropgation(event);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 雖然DOM和IE中的event對象不同,但基于他們之間相似依舊可以拿出跨瀏覽器方案來。 以上代碼顯示,我們?yōu)镋ve...
    Miss_Fairy閱讀 435評論 0 0
  • 設(shè)置EventUtil對象來處理瀏覽器間的差異 addHandler()方法接受3個參數(shù):要操作的元素、事件名稱和...
    wanpan__閱讀 373評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評論 25 709
  • 這,是一篇來自童教學(xué)院學(xué)員的真實自述! 筆者是一名小學(xué)教師,在近二十年教學(xué)生涯中,見過形形色色的學(xué)生,有天資聰慧的...
    童教腦潛能閱讀 409評論 0 0
  • 話說貞觀21年,一天唐太宗在朝堂上思考國家大事:西域吐蕃(現(xiàn)在的西藏)日益強盛,我大唐疆土遼闊,若有謀反...
    淡淡花飛DDHF閱讀 541評論 0 3

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