JavaScript 学习笔记(十五)


Posted in Javascript onJanuary 28, 2010

事件
事件是DOM(文档对象模型)的一部分。事件流就是事件发生顺序,这是IE和其他浏览器在事件支持上的主要差别。
一、事件流
1、冒泡型事件
IE上的解决方案就是冒泡型事件,它的基本思想是从最特定的目标到最不特定的事件目标(document对象)的顺序触发。
过程:按照DOM的层次结构像水泡一样不断上升至顶端。(从里面的div触发事件再到body,到html最后直到document最顶端)。
2、捕获型事件
可以说跟冒泡是正好相反的,事件从最不精确的对象开始触发,然后直到最精确。
3、DOM事件流
DOM同时支持以上两种事件模型,其中捕获型事件先发生,从document对象开始,最后在document对象结束。
二、事件监听函数
1、IE
每个函数和window对象都有两个方法:
attachEvent()方法:附加事件处理函数
[Object].attachEvent(“事件名”,处理函数fnHandler);
该方法有两个参数。
var fnClick = function() {
alert("你点击了ID为div1的DIV");
}
var oDiv = document.getElementById("div1");
oDiv.attachEvent("onclick", fnClick);
可以附加多个处理函数。
detachEvent()方法:分离移除事件处理函数
2、DOM
addEventListener()方法:分配附加事件处理函数
[Object]. addEventListener (“事件名”,处理函数fnHandler,Boolean);
该方法有三个参数(“事件名”,“分配的函数”,处理函数是冒泡阶段还是捕获阶段)
如果事件处理函数是用于捕获阶段,则第三个参数是true,用于冒泡阶段则为false
var fnClick = function() {
alert("Clicked!");
}
var oDiv = document.getElementById("div");
oDiv.addEventListener("click", fnClick, false);
oDiv.removeEventListener("click", fnClick, false);
可以附加多个处理函数。
removeEventListener()方法:移除事件处理函数
三、事件对象
包含三个方面的信息:
1、引起事件的对象:IE中就是window.event,DOM中是处理函数的为唯一参数;
2、事件发生时的鼠标信息;
3、事件发生时的键盘信息。
IE事件对象
在IE中,事件对象是window对象的一个属性event。也就是说,事件处理函数必须这样访问事件对象:
oDiv.onclick = function() { var oEvent = window.event; }oDiv.onclick = function(){ var oEvent = window.event;}
尽管是window对象的属性,event对象还是只能在事件发生时访问。所有的事件处理函数执行完毕后销毁。
DOM标准的事件对象
event对象必须作为唯一的参数传给事件处理函数。所以,在DOM兼容的浏览器(如Mozilla,Safari和Opera)中访问事件对象,要这么做:
oDiv.onclick = function() {
var oEvent = arguments[0];
}
//也可以这样
oDiv.onclick = function(oEvent) {
//.....
}

Javascript 相关文章推荐
Javascript的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
JavaScript中常用的运算符小结
Jan 18 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
JavaScript引用类型Array实例分析
Jul 24 Javascript
javascript实现考勤日历功能
Nov 29 Javascript
3分钟读懂移动端rem使用方法(推荐)
May 06 Javascript
了解JavaScript中let语句
May 30 Javascript
在vue-cli创建的项目中使用sass操作
Aug 10 Javascript
Extjs 几个方法的讨论
Jan 28 #Javascript
JavaScript 判断判断某个对象是Object还是一个Array
Jan 28 #Javascript
图像替换新技术 状态域方法
Jan 28 #Javascript
javascript innerText和innerHtml应用
Jan 28 #Javascript
使用JavaScript库还是自己写代码?
Jan 28 #Javascript
js或css实现滚动广告的几种方案
Jan 28 #Javascript
jquery中的sortable排序之后的保存状态的解决方法
Jan 28 #Javascript
You might like
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[48:51]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第一场 11.28
2020/12/02 DOTA
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
python先序遍历二叉树问题
2017/11/10 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
《望洞庭》教学反思
2014/02/16 职场文书
人力资源作业细则
2014/03/03 职场文书
相亲大会策划方案
2014/06/05 职场文书
仲裁协议书
2014/09/26 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2014年教务工作总结
2014/12/03 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
解决Oracle数据库用户密码过期
2022/05/11 Oracle