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 相关文章推荐
判断控件是否已加载完成的代码
Feb 24 Javascript
jquery图片放大功能简单实现
Aug 01 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
JS库之Waypoints的用法详解
Sep 13 Javascript
使用typescript开发angular模块并发布npm包
Apr 19 Javascript
vue实现局部刷新的实现示例
Apr 16 Javascript
Vue事件修饰符native、self示例详解
Jul 09 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 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二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
基于Python中的yield表达式介绍
2019/11/19 Python
如何给Python代码进行加密
2020/01/10 Python
Python 代码调试技巧示例代码
2020/08/11 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
大学军训感言800字
2014/02/27 职场文书
学校宣传标语
2014/06/18 职场文书
六一儿童节标语
2014/10/08 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
出国留学英文自荐信
2015/03/25 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
2016年党建工作简报
2015/11/26 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
Pygame Rect区域位置的使用(图文)
2021/11/17 Python