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中add实现同时选择两个id对象
Oct 22 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 Javascript
一个css与js结合的下拉菜单支持主流浏览器
Oct 08 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
Bootstrap树形组件jqTree的简单封装
Jan 25 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
使用vuex缓存数据并优化自己的vuex-cache
May 30 Javascript
小程序实现列表点赞功能
Nov 02 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
微信小程序新手教程之启动页的重要性
Mar 03 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 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类常量的使用详解
2013/06/08 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
nginx 设置多个站跨域
2021/03/09 Servers
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
原生js开发的日历插件
2017/02/04 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
Numpy之文件存取的示例代码
2018/08/03 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
植树造林的宣传标语
2014/06/23 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
食品安全汇报材料
2014/08/18 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2015年商场工作总结
2015/04/27 职场文书
实用求职信模板范文
2019/05/13 职场文书