JavaScript事件用法浅析


Posted in Javascript onOctober 31, 2016

本文实例讲述了JavaScript事件用法。分享给大家供大家参考,具体如下:

JavaScript通过事件与HTML交互。

事件流

事件流规定了事件的触发规则和顺序。DOM2规定了事件流包括三个阶段:事件捕获 -> 目标触发除 -> 事件冒泡。DOM2规定在事件捕获阶段不应调用事件处理程序,不过各大浏览器都不鸟它。DOM2级的事件处理程序操作函数对:addEventListener和removeEventListener的第三个参数则把这种事变成了DIY,这是一种妥协,同时让初学者认为dom的管理一片混乱。

var btn = document.getElementById("btn");
btn.addEventListener("click",function(){alert(this.id);},false);
document.body.addEventListener("click",function(){alert("body");},false);

更新上述js中addEventListener和removeEventListener中的第三个参数为true,对比为false时的效果,便大约能理解事件流了。

事件

事件是用户或浏览器自身执行的某和动作。

事件处理程序的添加方式

响应事件的函数称为事件处理程序。

指定事件处理程序有以下方式:

HTML特性指定。

如果某个元素支持某个事件,那么就有一个对应的HTML特性,用此特性就可以给其添加事件处理程序 。

<button id="btn" onclick="alert('button click')">button</button>

DOM0级。 将一个函数赋值给一个元素的事件处理程序属性:这是使用js指定事件生理程序的传统方式,至今仍被使用。

var btn = document.getElementById("btn");
btn.onmouseover = function(){
 this.innerHTML="按钮";
};

DOM2级。

通过addEventListener和removeEventListener来管理元素的事件。所有DOM节点都包含这两个方法,它们都包含三个参数,以add为例:

addEventListener(事件名,事件处理函数,是否在事件捕获时执行事件处理程序)

var btn = document.getElementById("btn");
btn.addEventListener("click",function(){alert(this.id);},true);
//注意下面的remove,它完全没有用,这两个匿名函数实际上是不同的对象
btn.removeEventListener("click",function(){alert(this.id);},true);

在上面代码中,指向同一对象的引用被认为是相同的,同样的申明生成的是两个外表相同但是存储在堆上两个不同位置的不同对象。

事件对象

DOM上的事件被触发时,会生成一个事件对象event。无论指定了什么事件处理程序都会传入event对象:准确的地说,event对象是在调用执行函数的执行环境中创建的,根据作用域链的定义,可知它是如何传入的。

var btn = document.getElementById("btn");
var btnClick = function(){
 alert(event.type);
}
btn.onclick = btnClick;//点击btn按钮时,弹出msg:click

event包含丰富的成员,用来控制访问事件,下面是所有事件的共有成员。

target:触发事件的动作直接作用的目标元素。
currentTarget:等于this,事件处理程序作用于的元素。
eventPhase:调用事件处理程序时,所处的事件流中的阶段。1,2,3 三个值分别对应事件流三阶段。
type:事件类型。单击事件对应 String: "click"。

事件类型

事件类型分为以下几类:

UI事件。
焦点事件。
鼠标与滚轮事件。
键盘与文本事件。
复合事件。
变动事件。
HTML5事件。
设备事件。
触摸与手势事件。

PS:关于javascript事件的详细说明可参考本站在线工具:

javascript事件与功能说明大全:
http://tools.3water.com/table/javascript_event

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
在你的网页中嵌入外部网页的方法
Apr 02 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
Jul 29 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
基于jQuery制作小图标上下滑动特效
Jan 18 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 #Javascript
JavaScript递归操作实例浅析
Oct 31 #Javascript
在html中引入外部js文件,并调用带参函数的方法
Oct 31 #Javascript
Validform表单验证总结篇
Oct 31 #Javascript
Javascript数组中push方法用法分析
Oct 31 #Javascript
JavaScript中的await/async的作用和用法
Oct 31 #Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 #Javascript
You might like
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
html中table数据排序的js代码
2011/08/09 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
js实现中文实时时钟
2020/01/15 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
python实现自动解数独小程序
2019/01/21 Python
Python3解释器知识点总结
2019/02/19 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
Python JSON编解码方式原理详解
2020/01/20 Python
解决django FileFIELD的编码问题
2020/03/30 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
python dict如何定义
2020/09/02 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
关于是否需要写商业计划书
2014/02/07 职场文书
青年文明号复核材料
2014/02/11 职场文书
社区居务公开实施方案
2014/03/27 职场文书
企业年度评优方案
2014/06/02 职场文书
安全施工责任书
2014/08/25 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
泰山导游词
2015/02/02 职场文书
计划生育责任书
2015/05/09 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers