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 相关文章推荐
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
jQuery动态创建html元素的常用方法汇总
Sep 05 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
Oct 17 Javascript
关于JS中prototype的理解
Sep 07 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
7个jQuery最佳实践
Jan 12 Javascript
值得分享的Bootstrap Table使用教程
Nov 23 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
浅谈Webpack 是如何加载模块的
May 24 Javascript
js实现录音上传功能
Nov 22 Javascript
JavaScript中的Proxy对象
Nov 27 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
php 使用post,get的一种简洁方式
2010/04/25 PHP
php实现加减法验证码代码
2014/02/14 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
js实现日期级联效果
2014/01/23 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
深入理解node.js http模块
2018/01/24 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python实现二分查找算法
2017/09/21 Python
python3爬取各类天气信息
2018/02/24 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
神路信息Java面试题目
2013/03/31 面试题
九年级体育教学反思
2014/01/23 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书