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 focus(fn),blur(fn)方法实例代码
Dec 16 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
js滚动条平滑移动示例代码
Mar 29 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
Feb 20 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
Jun 05 Javascript
使用p5.js临摹动态图片
Nov 04 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
JavaScript实现外溢动态爱心的效果的示例代码
Mar 21 Javascript
JS高级程序设计之class继承重点详解
Jul 07 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
ip签名探针
2006/10/09 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
PHP中each与list用法分析
2016/01/08 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
教师队伍管理制度
2014/01/14 职场文书
安全责任书范文
2014/03/12 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Python Matplotlib库实现画局部图
2021/11/17 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记