美文网首页
JavaScript之DOM和IE事件的区别

JavaScript之DOM和IE事件的区别

作者: MaterialCoder | 来源:发表于2017-07-31 23:34 被阅读0次

JavaScript和HTML之间的交互是通过事件来实现的。事件流描述的是从页面中接收事件的顺序。
IE的事件流是事件冒泡流,Netscape的事件流是事件捕获流,而DOM的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。

事件冒泡是指事件开始时是由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档);
事件捕获是指由不太具体的节点先接收到事件,而最具体的节点应该最后接收到事件。

事件捕获和事件冒泡

DOM事件和IE事件的区别

DOM IE
添加事件 addEventListener(type, handler, false/true) attachEvent('on'+type, handler)
移除事件 removeEventListener(type, handler, false/true) detachEvent('on'+type, handler)
event对象 event = event event = window.event
事件的目标 event.target event.srcElement
取消事件默认行为 event.preventDefault() event.returnValue = false
取消冒泡 event.stopPropagation() event.cancelBubble = true

基于DOM和IE事件的区别,可以得到一个跨浏览器的事件处理程序:

var EventUtil = {
    // 绑定事件
    addHandler: function(element, type, handler) {
        if(element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if(element.attchEvent) {
            element.attachEvent('on'+type, handler);
        } else {
            element['on'+type] = handler;
        }
    },

    // 获取event对象
    getEvent: function(event) {
        return event ? event : document.event;
    },

    // 获取事件目标
    getTarget: function(event) {
        return event.target || event.srcElement;
    },

    // 取消事件默认行为
    preventDefault: function(event) {
        if(event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },

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

    // 取消事件冒泡
    stopPropagation: function(event) {
        if(event.stopPropagation) {
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
        }
    }
}

相关文章

  • JavaScript之DOM和IE事件的区别

    JavaScript和HTML之间的交互是通过事件来实现的。事件流描述的是从页面中接收事件的顺序。IE的事件流是事...

  • 事件流的3个阶段:捕获、冒泡、目标

    事件模型:IE事件模型和DOM标准事件模型区别:IE事件模型没有捕获阶段,只有冒泡。 事件流的三个阶段:先捕获阶段...

  • 事件

    事件 DOM0 事件和DOM2级在事件监听使用方式上有什么区别 DOM0事件:通过JavaScript指定事件处理...

  • 事件

    题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0 事件JavaScript和HTML...

  • js的事件

    一、DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0事件:通过JavaScript指定事件处理...

  • 事件应用小记

    DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0事件 通过JavaScript指定事件处理程序...

  • DOM事件

    DOM0 事件和DOM2级在事件监听使用方式上有什么区别 DOM0事件:通过javascript制定事件处理程序,...

  • 事件

    题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0事件: 通过JavaScript指定...

  • 事件

    DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0 通过JavaScript指定事件处理程序就是...

  • 事件

    DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0:通过JavaScript指定事件处理程序,即...

网友评论

      本文标题:JavaScript之DOM和IE事件的区别

      本文链接:https://www.haomeiwen.com/subject/tardlxtx.html