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 相关文章推荐
Javascript中的常见排序算法
Mar 27 Javascript
JavaScript国旗变换效果代码
Aug 13 Javascript
网页图片延时加载的js代码
Apr 22 Javascript
js抽奖实现随机抽奖代码效果
Dec 02 Javascript
基于jquery实现的自动补全功能
Mar 12 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 Javascript
Vue中添加过渡效果的方法
Mar 16 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
详解一个基于套接字实现长连接的express
Mar 28 Javascript
react-native滑动吸顶效果的实现过程
Jun 03 Javascript
微信小程序位置授权处理方法
Jun 13 Javascript
swiperjs实现导航与tab页的联动
Dec 13 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
php单一接口的实现方法
2015/06/20 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
python常见数制转换实例分析
2015/05/09 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python内置函数及功能简介汇总
2020/10/13 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
文化建设工作方案
2014/05/12 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
师德培训心得体会2016
2016/01/09 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
Python中else的三种使用场景
2021/06/16 Python
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技