JavaScript DOM事件绑定模型详解

作者:页面旅途

时间:2026-10-22

浏览:390

本文详细解析JavaScript的三种DOM事件模型:内联模型、脚本模型及DOM2级事件模型。重点对比了标准方法addEventListener与IE特有的attachEvent在参数、this指向、捕获支持及内存管理上的差异,并指出IE9后标准模型的优势。

文章目录

JavaScript DOM事件绑定模型概述

JavaScript事件绑定

在JavaScript中,主要存在三种事件处理模型:

  • 内联模型
  • 脚本模型
  • DOM2级事件模型

内联与脚本模型

1、内联模型


//基本废除不用
<input type="button" value="按钮" onclick="alert('Lee');" />
<input type="button" value="按钮" onclick="box();" /> 

2、脚本模型


//基本不用
var input = document.getElementsByTagName('input')[0]; //得到 input 对象
 input.onclick = function () { //匿名函数执行
 alert('Lee');
};
事件处理函数 影响的元素 何时发生
onabort 图像 当图像加载被中断时
onblur 窗口、框架、所有表单对象 当焦点从对象上移开时
onchange 输入框,选择框和文本区域 当改变一个元素的值且失去焦点时
onclick 链接、按钮、表单对象、图像映射区域 当用户单击对象时
ondblclick 链接、按钮、表单对象 当用户双击对象时
ondragdrop 窗口 当用户将一个对象拖放到浏览器窗口时
onError 脚本 当脚本中发生语法错误时
onfocus 窗口、框架、所有表单对象 当单击鼠标或者将鼠标移动聚焦到窗口或框架时
onkeydown 文档、图像、链接、表单 当按键被按下时
onkeypress 文档、图像、链接、表单 当按键被按下然后松开时
onkeyup 文档、图像、链接、表单 当按键被松开时
onload 主题、框架集、图像 文档或图像加载后
onunload 主体、框架集 文档或框架集卸载后
onmouseout 链接 当图标移除链接时
onmouseover 链接 当鼠标移到链接时
onmove 窗口 当浏览器窗口移动时
onreset 表单复位按钮 单击表单的 reset 按钮
onresize 窗口 当选择一个表单对象时
onselect 表单元素 当选择一个表单对象时
onsubmit 表单 当发送表格到服务器时

DOM2级事件模型详解

3、DOM2级事件模型

“DOM2级事件”规范定义了两个用于注册和移除事件处理程序的方法: addEventListener()和 removeEventListener()。所有 DOM 节点均包含这两个方法,它们各自接受三个参数:事件名称、处理函数以及一个布尔值(true 表示捕获阶段,false 表示冒泡阶段)。


window.addEventListener('load', function () {
 alert('Lee');
}, false);
window.removeEventListener('load', function () {
 alert('Mr.Lee');
}, false)

IE兼容性与差异分析

注:Internet Explorer (IE) 实现了与 DOM 标准类似的两组方法:attachEvent()和 detachEvent()。这两个方法接受的参数相同:事件名称和处理函数。

在使用这两组函数时,首先需要明确它们之间的主要区别:


1. IE 不支持捕获,只支持冒泡;
2. IE 添加事件不能屏蔽重复的函数;
3. IE 中的 this 指向的是 window 而不是 DOM 对象。
4. 在传统事件上,IE 是无法接受到 event 对象的,但使用了 attchEvent()却可以,但有些区别。
```javascript
window.attachEvent('load', function () {
 alert('Lee');
}, false);
window.detachEvent('load', function () {
 alert('Mr.Lee');
}, false)
```

注:在实际开发中,IE 的事件绑定函数 attachEvent()和 detachEvent()可能不再被推荐使用,原因如下:

1. IE9 开始全面支持 W3C 标准中的事件绑定函数;

2. IE 的事件绑定函数无法正确传递 this 上下文;

3. IE 的事件绑定函数不支持捕获阶段;

4. 同一函数注册绑定后,无法有效屏蔽重复注册;5. 存在内存泄漏风险

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章