js中DOM事件绑定分析


Posted in Javascript onMarch 18, 2018

js事件绑定

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 表单 当发送表格到服务器时

3、内联模型

“DOM2 级事件”定义了两个方法,用于添加事件和删除事件处理程序的操作:
addEventListener()和 removeEventListener()。所有 DOM 节点中都包含这两个方法,并且它们都接受 3 个参数;事件名、函数、冒泡或捕获的布尔值(true 表示捕获,false 表示冒泡)

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

PS: 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)
```

PS:IE 中的事件绑定函数 attachEvent()和 detachEvent()可能在实践中不去使用,有几个原因:

1.IE9 就将全面支持 W3C 中的事件绑定函数;

2.IE 的事件绑定函数无法传递 this;

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

4.同一个函数注册绑定后,没有屏蔽掉;5.有内存泄漏的问题

Javascript 相关文章推荐
兼容IE与firefox火狐的回车事件(js与jquery)
Oct 20 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
Feb 03 Javascript
javascript Array.prototype.slice的使用示例
Nov 14 Javascript
浅析node.js中close事件
Nov 26 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
浅谈window对象的scrollBy()方法
Jul 15 Javascript
jQuery链式调用与show知识浅析
May 11 Javascript
JavaScript中数组的22种方法必学(推荐)
Jul 20 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
js中如何完美的解析数据
Mar 18 #Javascript
解决使用vue.js路由后失效的问题
Mar 17 #Javascript
vue实现的上传图片到数据库并显示到页面功能示例
Mar 17 #Javascript
Vue的路由动态重定向和导航守卫实例
Mar 17 #Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 #Javascript
对vue里函数的调用顺序介绍
Mar 17 #Javascript
基于vue2.0动态组件及render详解
Mar 17 #Javascript
You might like
php&amp;java(一)
2006/10/09 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
领导干部作风建设总结
2014/10/23 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android
在python中读取和写入CSV文件详情
2022/06/28 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS