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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
js的逻辑运算符 ||
May 31 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
一次记住JavaScript的6个正则表达式方法
Feb 22 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
Sep 15 Javascript
JavaScript正则表达式验证登录实例
Mar 18 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
8个非常实用的Vue自定义指令
Dec 15 Vue.js
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 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
Python Requests安装与简单运用
2016/04/07 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
总经理任命书范本
2014/06/05 职场文书
影子教师研修方案
2014/06/14 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis