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 相关文章推荐
jQuery 图片切换插件(代码比较少)
May 07 Javascript
js简单的弹出框有关闭按钮
May 05 Javascript
文字垂直滚动之javascript代码
Jul 29 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
May 27 Javascript
原生JavaScript编写canvas版的连连看游戏
May 29 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
vue实现页面加载动画效果
Sep 19 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 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遍历类中包含的所有元素的方法
2015/05/12 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
php中上传文件的的解决方案
2018/09/25 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python3实现Web网页图片下载
2016/01/28 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
python实现海螺图片的方法示例
2019/05/12 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
工程承包协议书
2014/04/22 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
图解上海144收音机
2021/04/22 无线电
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
Python中三种花式打印的示例详解
2022/03/19 Python