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 相关文章推荐
PJ Blog修改-禁止复制的代码和方法
Oct 25 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
Jquery练习之表单验证实现代码
Dec 14 Javascript
node.js中使用node-schedule实现定时任务实例
Jun 03 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 Javascript
javaScript数组迭代方法详解
Apr 14 Javascript
jquery获取点击控件的绝对位置简单实例
Oct 13 Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
vuex 中插件的编写案例解析
Jun 10 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
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
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
vuex存取值和映射函数使用说明
2020/07/24 Javascript
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
python 如何在测试中使用 Mock
2021/03/01 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
html5读取本地文件示例代码
2014/04/22 HTML / CSS
教育系毕业生中文求职信范文
2013/10/06 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
接待员岗位职责
2015/02/13 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript