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 相关文章推荐
JS网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
微信小程序 教程之小程序配置
Oct 17 Javascript
学习JavaScript图片预加载模块
Nov 07 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
React Native之prop-types进行属性确认详解
Dec 19 Javascript
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
微信小程序云开发之模拟后台增删改查
May 16 Javascript
使用js原生实现年份轮播选择效果实例
Jan 12 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安装攻略:常见问题解答(二)
2006/10/09 PHP
php a simple smtp class
2007/11/26 PHP
如何使用php输出时间格式
2013/08/31 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
浅谈Javascript数组(推荐)
2016/05/17 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
一篇不错的Python入门教程
2007/02/08 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
python线程里哪种模块比较适合
2020/08/02 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
new修饰符是起什么作用
2015/06/28 面试题
介绍一下Python中webbrowser的用法
2013/05/07 面试题
生产主管岗位职责
2013/11/10 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
暑期社会实践感言
2014/02/25 职场文书
请假条的格式
2014/04/11 职场文书
医疗纠纷协议书
2014/04/16 职场文书
冬季安全检查方案
2014/05/23 职场文书
小学四年级学生评语
2014/12/26 职场文书
红与黑读书笔记
2015/06/29 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
mysql主从复制的实现步骤
2021/10/24 MySQL