js中DOM事件绑定分析
js事件绑定
JavaScript 有三种事件模型:
1、内联模型
2、脚本模型
函数执行
alert('Lee');
};
事件处理
函数 影响的元素 何时发生
onabort 图像 当图像加载被中断时
onblur 窗口、框架、所有表单对象 当焦点从对象上移开时
onchange 输入框,选择框和文本区域 当改变一个元素的值且失去焦点时
onclick
链接、按钮、表单对象、图像映射区域 当
用户单击对象时
ondblclick
链接、按钮、表单对象 当
用户双击对象时
ondragdrop 窗口 当
用户将一个对象拖放到浏览器窗口时
onError 脚本 当脚本中发生语法
错误时
onfocus 窗口、框架、所有表单对象 当单击鼠标或者将鼠标移动聚焦到窗口或框架时
onkeydown 文档、图像、
链接、表单 当按键被按下时
onkeypress 文档、图像、
链接、表单 当按键被按下然后松开时
onkeyup 文档、图像、
链接、表单 当按键被松开时
onload
主题、框架集、图像 文档或图像加载后
onunload 主体、框架集 文档或框架集卸载后
onmou
SEOut
链接 当图标移除
链接时
onmou
SEOver
链接 当鼠标移到
链接时
onmove 窗口 当浏览器窗口移动时
onreset 表单复位按钮 单击表单的 reset 按钮
onresize 窗口 当选择一个表单对象时
onselect 表单元素 当选择一个表单对象时
onsubmit 表单 当发送表格到服务器时
3、内联模型
“DOM2 级事件”定义了两个方法,用于添加事件和删除事件处理程序的操作:
addEventListener()和 removeEventListener()。所有 DOM 节点中都包含这两个方法,并且它们都接受 3 个参数;事件名、函数、冒泡或捕获的布尔值(true 表示捕获,false 表示冒泡)
PS: IE 实现了与 DOM 中类似的两个方法:attachEvent()和 detachEvent()。这两个方法接受
相同的参数:事件名称和函数。
在使用这两组函数的时候,先把区别说一下:
不支持捕获,只
支持冒泡;
2. IE
添加事件不能
屏蔽重复的
函数;
3. IE 中的 this 指向的是 window 而不是 DOM 对象。
4. 在传统事件上,IE 是无法接受到 event 对象的,但使用了 attchEvent()却可以,但有些区别。
```javascript
window.attachEvent('load',false);
window.detachEvent('load',false)
```
PS:IE 中的事件绑定函数 attachEvent()和 detachEvent()可能在实践中不去使用,有几个原因:
1.IE9 就将全面支持 W3C 中的事件绑定函数;
2.IE 的事件绑定函数无法传递 this;
3.IE的事件绑定函数不支持捕获;
4.同一个函数注册绑定后,没有屏蔽掉;5.有内存泄漏的问题