JavaScript中的事件模型

67 阅读2分钟

JavaScript中的事件模型?

事件模型分为三种:

  • 原始事件模型(DOM0级)
  • 标准事件模型(DOM2级)
  • IE事件模型

原始事件模型

  • HTML代码中直接绑定

image.png

  • 通过JS代码绑定

image.png

特点:

  • 绑定速度快(DOM0级事件具有很好的跨浏览器优势,会以最快的绑定速度,但是由于绑定速度太快,可能页面还未完全加载出来,以至于事件还可能无法正常运行)
  • 支支持冒泡,不支持捕获
  • 同一类型的事件只能绑定一次(删除DOM0级事件只要将对应事件属性设置为null即可)

标准事件模型

  • 事件捕获阶段:事件从document一直向下传播到目标元素。以此检查经过的节点是否绑定了事件监听函数,如果有则执行
  • 事件处理阶段:事件到达目标元素,触发目标元素的监听函数
  • 事件冒泡阶段:事件从目标元素冒泡到document,依次检查经过的节点是否绑定了监听事件,如果有则执行 事件绑定监听函数的方式如下:

image.png

事件移除监听函数的方式如下:

image.png

参数如下:

  • eventType指定事件类型
  • handler是事件处理函数
  • useCapture是一个boolean用于指定是否在捕获阶段进行处理,一般设置为false与IE浏览器保持一致

特点:

  • 可以在一个DOM元素上绑定多个事件处理器,各自不会冲突
  • 执行时机(通过useCapture的true或者false来控制)

IE事件模型

  • 事件处理阶段:事件到达目标元素,触发目标元素的监听函数
  • 事件冒泡阶段:事件从目标元素冒泡到document,依次检查经过的节点是否绑定了事件监听函数,如果有则执行 事件绑定监听函数的方式如下:

image.png

事件移除监听函数的方式如下:

image.png