- 浏览: 197241 次
- 性别:
- 来自: 上海
最新评论
-
zhuzhuaijq:
Flash OBJECT和EMBED标签详解 -
matt.u:
好像有点深奥。
一篇比较好演示AS的重构方法 -
luofeng113:
分析得不错,
flex编程感受 -
felixsky:
请问flexunit如何测试private和internal的 ...
FLEXUnit应用 -
wv1124:
你不能分个页啊,看得人都要死了
Apollo: 开发者问答录
一.今天的事件
事件是DOM的一部分,在DOM Level1中未定义任何事件,在Level中定义了一小部分子集,完整的事件是在Level3中规定的,该标准在2004年最终定案。
Mozilla的事件模式与DOM标准最为接近,IE成为唯一一个对DOM事件模式缺乏良好支持的浏览器。
二.事件流
事件流意味着在页面上可有不仅一个,甚至多个元素响应同一个事件。
1. 冒泡型事件
IE上的解决方案的绰号为冒泡的技术。冒泡型事件的基本思想是,时间按照最特定的目标到最不特定的事件目标的顺序触发。
IE6.0中,<html/>元素也可接收冒泡的时间。
2. 捕获型事件
Netscape Navigator4.0使用了捕获型事件的解决方案。事件从最不确定的对象(document对象)开始触发,然后到最精确。
3.DOM事件流
DOM同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触发DOM中的所有对象,从document对象开始,也在document对象结束。
DOM事件模型的最独特的性质是,文本节点也触发事件(在IE中不会)。
三.时间处理函数/监听函数
事件是用户或浏览器自身进行的特定行为。这些事件都有自己的名字,如click、load等。用于响应某个事件而调用的函数称为事件处理函数。
如果是JavaScript中分配的事件处理函数,则需要首先获得要处理对象的引用,然后将函数赋值给事件处理函数属性,eg1.
var oDiv = document.getElementById(“div1”);
oDiv.onclick = function() {
alert(“I was clicked.”);
}
用这个分配方法,事件处理函数必须小写,才能正确响应事件。
Eg2. <div onclick=”alert(‘I was clicked.’)”></div>
在例二中,事件处理函数的大小写可以任意
1. IE
在IE中,每个元素和window对象都有两个方法:attachEvent()和detachEvent()。attachEvent()用来给一个事件附加事件处理函数。而detachEvent()用来将事件处理函数分离出来。Eg.
var fnClick = function() {
alert(“Clicked!”);
}
var oDiv = document.getElementById(“div1”);
oDiv.attachEvent(“onclick”, fnClick);
oDiv.detachEvent(“onclick”, fnClick);
2. DOM
DOM方法addEventListener()和removeEventListener()用来分配和移除事件处理函数。与IE不同,这些方法需要三个参数:事件名称、要分配的函数和处理函数用于冒泡阶段(为false时)还是捕获阶段(为true时)。Eg.
oDiv. addEventListener (“onclick”, fnClick, false);
oDiv.removeEventListener (“onclick”, fnClick, false);
如果使用传统方法直接给事件处理函数属性赋值,事件处理函数将被添加到事件的冒泡阶段,eg.
oDiv.onclick = fnClick;
oDiv.removeEventListener (“onclick”, fnClick, false);
四. 事件对象
事件对象只在发生事件时才被创建,且只有事件处理函数才能访问。所有事件处理函数执行完毕后,事件对象就被销毁。
1. 定位
在IE中,事件对象是window对象的一个属性event,也就是说,事件处理函数必须这样访问事件对象:
oDiv.onclick = function() {
var oEvent = window.event;
}
Event对象只能在事件发生时访问。所有的事件处理函数执行完毕后,事件对象就被销毁。
2. 属性/方法
见页面233-235页,在此不详述。
3. 相似性
1) 获取事件类型
下面代码可在任何浏览器中获取事件的类型:
var sType = oEvent.type;
它返回“click”或“mouseover”之类的值。Eg.
function handleEvent(oEvent) {
if (oEvent.type == “click”) {
alert(“Clicked!”);
} else if (oEvent.type == “mouseover”) {
alert(“mouse over!”);
}
}
oDiv.onclick = handleEvent;
oDiv.onmouseover = handleEvent;
2) 获取按键代码
Eg. var iKeyCode = oEvent.keyCode;
例如,Enter键的keyCode为13,空格键的keyCode为32,回退键为8.
3) 检测Shift、Alt和Ctrl键
Eg. var bShift = oEvent.shiftKey;
var bAlt = oEvent.altKey;
var bCtrl = oEvent.ctrlKey;
4) 获取客户端坐标
Eg. var iClientX = oEvent.clientX;
var iClientY = oEvent.clientY;
5) 获取屏幕坐标
可用screenX和screenY属性来获取鼠标指针在计算机屏幕中的位置
var iScreenX = oEvent.screenX;
var iScreenY = oEvent.screenY;
4.区别
1)获取目标
在IE中:var oTarget = oEvent.srcElement;
在DOM兼容的浏览器中:var oTarger = oEvent.target;
2)获取字符代码
在IE中:var iCharCode = oEvent.keyCode;
在DOM兼容的浏览器中:var iCharCode = oEvent.charCode;
3)阻止某个事件的默认行为
在IE中:oEvent.returnValue = false;
在DOM兼容的浏览器中:oEvent.preventDefault();
4)阻止事件复制(冒泡)
在IE中:oEvent.cancelBubble = true;
在mozilla中:oEvent.stopPropagation ();
五.事件的类型
DOM标准定义了以下几种事件:
鼠标事件
键盘事件
HTML事件:窗口发生变动或者发生特定的客户端-服务端交互时触发;
突变事件:底层的DOM结构发生改变时触发。
1. 鼠标事件
Eg. click、dbclick、mousedown、mouseout、mouseover、mouseup、mouseover。
1) 属性
Eg. 坐标属性(eg。clientX和clientY等)、type属性、target或srcElement属性、shiftKey、ctrlKey、altKey、metaKey(DOM)属性、button属性(只在mousedown、mouseover、mouseout、mouseover和mouseup事件中)。
2) 顺序
在同一个目标上要按顺序发生以下事件: mousedown->mouseup->click->mousedown->mouseup->click->dbclick。
2. 键盘事件
键盘事件有:keydown、keypress和keyup。
1) 事件的属性
对某个键盘事件,会填入如下的事件属性: keyCode、charCode(仅DOM)、target(DOM)或者srcElement(IE)、shiftKey、ctrlKey、altKey、metaKey(DOM)属性。
2) 顺序
按下一个字符键,发生事件顺序为: keydown->keypress->keyup;
按下一个非字符键,发生事件顺序为:keydown->keyup。
3. HTML事件
HTML事件有: load、unload、abort、error、select、change、submit、reset、resize、scroll、focus、blur事件。
1) load和unload事件
eg. window.onload = function() {
alert(“loaded!”);
}
2) resize事件
resize事件用来判断何时动态的改变某些元素。Eg.
<body onresize=”alert(‘Resizing’)”>
最大化或最小化窗口时,也会触发resize事件。
3) Scroll事件
Eg. <body onscroll=”alert(‘Scroll)”>
4.变化事件
变化事件包括如下内容:
DOMSubtreeModified——当文档或者元素的子树因为添加或删除节点而改变时触发;
DOMNodeInserted——当一个节点作为另一个节点的子节点插入时触发;
DOMNodeRemoved——当一个节点作为另一个节点的子节点删除时触发;
DOMNodeRemovedFromDocument——当一个节点从文档中删除时触发;
DOMNodeInsertedIntoDocument——当一个节点插入到文档中时触发。
这些事件的目的是,提供一个独立于语言的事件范围,使其可使用在所有基于XML的语言中。
六.跨平台的事件
1. EventUtil对象
var EventUtil = new Object;
2. 添加/删除事件处理函数
EventUtil.addEventHandler = function() {
if (oTarget.addEventListener) { //对DOM兼容的浏览器
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) { //对IE
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
}
EventUtil.removeHandler = function(oTarget, sEventType, fnHandler) {
if (oTarget.removeEventListener) { //对DOM兼容的浏览器
oTarget.removeEventListener(sEventType, fnHandler, false);
} else if (oTarget.detachEvent) { //对IE
oTarget.detachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = null;
}
}
3. 格式化event对象
一种对付IE和DOM中的event对象之间区别的最佳手段是,调整它们使之尽可能地表现相似,因为更多的浏览器使用的是DOM的事件类型,所以将IE的事件模型调整为接近于DOM事件模型就可以了。
根据DOM属性/方法与IE属性/方法的不同,最后可得出如下的格式化event对象函数,如下所示:
EventUtil.formatEvent = function(oEvent) {
if (isIE && isWin) {
oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
oEvent.eventPhase = 2;
oEvent.isChar = (oEvent.charCode > 0);
oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
oEvent.pageY = oEvent.clientY + document.body.scrollTop;
oEvent.preventDefault = function() {
this.returnValue = false;
};
if (oEvent.type == "mouseout") {
oEvent.relatedTarget = oEvent.toElement;
} else if (oEvent.type == "mouseover") {
oEvent.relatedTarget = oEvent.fromElement;
}
oEvent.stopPropagation = function() {
this.cancelBubble = true;
};
oEvent.target = oEvent.srcElement;
oEvent.time = (new Date()).getTime();
}
return oEvent;
}
4. 获取事件对象
IE和DOM使用不同的方法来获取event对象。在IE中,event对象是与window对象相关的,而在DOM中,它独立于任何其他对象,并且是作为参数传递的。下面我们编写一个通用的获取event对象的函数,代码如下:
EventUtil.getEvent = function() {
if (window.event) {
return this.formatEvent(window.event);
} else {
return EventUtil.getEvent.caller.arguments[0];
}
}
调用举例如下:
oDiv.onclick = function() {
var oEvent = EventUtil.getEvent();
}
七. 小结
本章详细介绍了JavaScript中事件、事件流的概念,详细研究了event对象,最后一节还创建了一个跨浏览器事件库,可使用同一套方法来访问事件对象,添加/删除事件处理函数,而无需考虑浏览器检测的问题。
事件是DOM的一部分,在DOM Level1中未定义任何事件,在Level中定义了一小部分子集,完整的事件是在Level3中规定的,该标准在2004年最终定案。
Mozilla的事件模式与DOM标准最为接近,IE成为唯一一个对DOM事件模式缺乏良好支持的浏览器。
二.事件流
事件流意味着在页面上可有不仅一个,甚至多个元素响应同一个事件。
1. 冒泡型事件
IE上的解决方案的绰号为冒泡的技术。冒泡型事件的基本思想是,时间按照最特定的目标到最不特定的事件目标的顺序触发。
IE6.0中,<html/>元素也可接收冒泡的时间。
2. 捕获型事件
Netscape Navigator4.0使用了捕获型事件的解决方案。事件从最不确定的对象(document对象)开始触发,然后到最精确。
3.DOM事件流
DOM同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触发DOM中的所有对象,从document对象开始,也在document对象结束。
DOM事件模型的最独特的性质是,文本节点也触发事件(在IE中不会)。
三.时间处理函数/监听函数
事件是用户或浏览器自身进行的特定行为。这些事件都有自己的名字,如click、load等。用于响应某个事件而调用的函数称为事件处理函数。
如果是JavaScript中分配的事件处理函数,则需要首先获得要处理对象的引用,然后将函数赋值给事件处理函数属性,eg1.
var oDiv = document.getElementById(“div1”);
oDiv.onclick = function() {
alert(“I was clicked.”);
}
用这个分配方法,事件处理函数必须小写,才能正确响应事件。
Eg2. <div onclick=”alert(‘I was clicked.’)”></div>
在例二中,事件处理函数的大小写可以任意
1. IE
在IE中,每个元素和window对象都有两个方法:attachEvent()和detachEvent()。attachEvent()用来给一个事件附加事件处理函数。而detachEvent()用来将事件处理函数分离出来。Eg.
var fnClick = function() {
alert(“Clicked!”);
}
var oDiv = document.getElementById(“div1”);
oDiv.attachEvent(“onclick”, fnClick);
oDiv.detachEvent(“onclick”, fnClick);
2. DOM
DOM方法addEventListener()和removeEventListener()用来分配和移除事件处理函数。与IE不同,这些方法需要三个参数:事件名称、要分配的函数和处理函数用于冒泡阶段(为false时)还是捕获阶段(为true时)。Eg.
oDiv. addEventListener (“onclick”, fnClick, false);
oDiv.removeEventListener (“onclick”, fnClick, false);
如果使用传统方法直接给事件处理函数属性赋值,事件处理函数将被添加到事件的冒泡阶段,eg.
oDiv.onclick = fnClick;
oDiv.removeEventListener (“onclick”, fnClick, false);
四. 事件对象
事件对象只在发生事件时才被创建,且只有事件处理函数才能访问。所有事件处理函数执行完毕后,事件对象就被销毁。
1. 定位
在IE中,事件对象是window对象的一个属性event,也就是说,事件处理函数必须这样访问事件对象:
oDiv.onclick = function() {
var oEvent = window.event;
}
Event对象只能在事件发生时访问。所有的事件处理函数执行完毕后,事件对象就被销毁。
2. 属性/方法
见页面233-235页,在此不详述。
3. 相似性
1) 获取事件类型
下面代码可在任何浏览器中获取事件的类型:
var sType = oEvent.type;
它返回“click”或“mouseover”之类的值。Eg.
function handleEvent(oEvent) {
if (oEvent.type == “click”) {
alert(“Clicked!”);
} else if (oEvent.type == “mouseover”) {
alert(“mouse over!”);
}
}
oDiv.onclick = handleEvent;
oDiv.onmouseover = handleEvent;
2) 获取按键代码
Eg. var iKeyCode = oEvent.keyCode;
例如,Enter键的keyCode为13,空格键的keyCode为32,回退键为8.
3) 检测Shift、Alt和Ctrl键
Eg. var bShift = oEvent.shiftKey;
var bAlt = oEvent.altKey;
var bCtrl = oEvent.ctrlKey;
4) 获取客户端坐标
Eg. var iClientX = oEvent.clientX;
var iClientY = oEvent.clientY;
5) 获取屏幕坐标
可用screenX和screenY属性来获取鼠标指针在计算机屏幕中的位置
var iScreenX = oEvent.screenX;
var iScreenY = oEvent.screenY;
4.区别
1)获取目标
在IE中:var oTarget = oEvent.srcElement;
在DOM兼容的浏览器中:var oTarger = oEvent.target;
2)获取字符代码
在IE中:var iCharCode = oEvent.keyCode;
在DOM兼容的浏览器中:var iCharCode = oEvent.charCode;
3)阻止某个事件的默认行为
在IE中:oEvent.returnValue = false;
在DOM兼容的浏览器中:oEvent.preventDefault();
4)阻止事件复制(冒泡)
在IE中:oEvent.cancelBubble = true;
在mozilla中:oEvent.stopPropagation ();
五.事件的类型
DOM标准定义了以下几种事件:
鼠标事件
键盘事件
HTML事件:窗口发生变动或者发生特定的客户端-服务端交互时触发;
突变事件:底层的DOM结构发生改变时触发。
1. 鼠标事件
Eg. click、dbclick、mousedown、mouseout、mouseover、mouseup、mouseover。
1) 属性
Eg. 坐标属性(eg。clientX和clientY等)、type属性、target或srcElement属性、shiftKey、ctrlKey、altKey、metaKey(DOM)属性、button属性(只在mousedown、mouseover、mouseout、mouseover和mouseup事件中)。
2) 顺序
在同一个目标上要按顺序发生以下事件: mousedown->mouseup->click->mousedown->mouseup->click->dbclick。
2. 键盘事件
键盘事件有:keydown、keypress和keyup。
1) 事件的属性
对某个键盘事件,会填入如下的事件属性: keyCode、charCode(仅DOM)、target(DOM)或者srcElement(IE)、shiftKey、ctrlKey、altKey、metaKey(DOM)属性。
2) 顺序
按下一个字符键,发生事件顺序为: keydown->keypress->keyup;
按下一个非字符键,发生事件顺序为:keydown->keyup。
3. HTML事件
HTML事件有: load、unload、abort、error、select、change、submit、reset、resize、scroll、focus、blur事件。
1) load和unload事件
eg. window.onload = function() {
alert(“loaded!”);
}
2) resize事件
resize事件用来判断何时动态的改变某些元素。Eg.
<body onresize=”alert(‘Resizing’)”>
最大化或最小化窗口时,也会触发resize事件。
3) Scroll事件
Eg. <body onscroll=”alert(‘Scroll)”>
4.变化事件
变化事件包括如下内容:
DOMSubtreeModified——当文档或者元素的子树因为添加或删除节点而改变时触发;
DOMNodeInserted——当一个节点作为另一个节点的子节点插入时触发;
DOMNodeRemoved——当一个节点作为另一个节点的子节点删除时触发;
DOMNodeRemovedFromDocument——当一个节点从文档中删除时触发;
DOMNodeInsertedIntoDocument——当一个节点插入到文档中时触发。
这些事件的目的是,提供一个独立于语言的事件范围,使其可使用在所有基于XML的语言中。
六.跨平台的事件
1. EventUtil对象
var EventUtil = new Object;
2. 添加/删除事件处理函数
EventUtil.addEventHandler = function() {
if (oTarget.addEventListener) { //对DOM兼容的浏览器
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) { //对IE
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
}
EventUtil.removeHandler = function(oTarget, sEventType, fnHandler) {
if (oTarget.removeEventListener) { //对DOM兼容的浏览器
oTarget.removeEventListener(sEventType, fnHandler, false);
} else if (oTarget.detachEvent) { //对IE
oTarget.detachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = null;
}
}
3. 格式化event对象
一种对付IE和DOM中的event对象之间区别的最佳手段是,调整它们使之尽可能地表现相似,因为更多的浏览器使用的是DOM的事件类型,所以将IE的事件模型调整为接近于DOM事件模型就可以了。
根据DOM属性/方法与IE属性/方法的不同,最后可得出如下的格式化event对象函数,如下所示:
EventUtil.formatEvent = function(oEvent) {
if (isIE && isWin) {
oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
oEvent.eventPhase = 2;
oEvent.isChar = (oEvent.charCode > 0);
oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
oEvent.pageY = oEvent.clientY + document.body.scrollTop;
oEvent.preventDefault = function() {
this.returnValue = false;
};
if (oEvent.type == "mouseout") {
oEvent.relatedTarget = oEvent.toElement;
} else if (oEvent.type == "mouseover") {
oEvent.relatedTarget = oEvent.fromElement;
}
oEvent.stopPropagation = function() {
this.cancelBubble = true;
};
oEvent.target = oEvent.srcElement;
oEvent.time = (new Date()).getTime();
}
return oEvent;
}
4. 获取事件对象
IE和DOM使用不同的方法来获取event对象。在IE中,event对象是与window对象相关的,而在DOM中,它独立于任何其他对象,并且是作为参数传递的。下面我们编写一个通用的获取event对象的函数,代码如下:
EventUtil.getEvent = function() {
if (window.event) {
return this.formatEvent(window.event);
} else {
return EventUtil.getEvent.caller.arguments[0];
}
}
调用举例如下:
oDiv.onclick = function() {
var oEvent = EventUtil.getEvent();
}
七. 小结
本章详细介绍了JavaScript中事件、事件流的概念,详细研究了event对象,最后一节还创建了一个跨浏览器事件库,可使用同一套方法来访问事件对象,添加/删除事件处理函数,而无需考虑浏览器检测的问题。
发表评论
-
如何优化JavaScript脚本的性能
2008-08-19 10:01 1117如何优化JavaScript脚本的 ... -
几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
2008-08-18 16:53 1645AJAX是web20的基石,现在 ... -
CSS技巧集合
2008-08-14 13:08 1004一.使用css缩写 使 ... -
IE6下png图片和png背景透明
2008-08-14 12:56 18663http://www.163show.cn/blog/inde ... -
记录没有看完
2008-07-24 10:50 837http://www.iteye.com/news/1816 -
实现不同域(Domain)之间的数据交换
2008-07-15 15:49 1438引言 前些天在对公司原有的 web 应用进行改版时遇到一个问题 ... -
网页中超长文字的断行问题
2008-07-15 10:11 1897网页中超长文字的断行问题2006/9/25 at 01:50 ... -
JS中的instanceof和typeof
2008-06-24 16:35 1673对于instanceof和typeof,以前偶尔的用到过,特别 ... -
JavaScript OOP
2008-06-16 15:25 836JavaScript的对象总有4类: 脚本对象 ... -
prototype.js简易教程文档2
2008-05-26 17:41 11344.15. options 参数对象 AJAX操作中一个重要的 ... -
prototype.js简易教程手册1
2008-05-26 17:39 14951. Prototype是什么? 或许你还没有用过它, pro ... -
JavaScript[对象.属性]集锦
2008-05-26 17:37 914SCRIPT 标记 用于包含JavaScript代码. ... -
使用Session常见问题集锦
2008-05-26 17:35 1050问:为什么Session在有些 ... -
css例子
2008-05-22 19:15 1455原文作者:Douglas Bowman ... -
转载--Cookie专题
2008-05-22 16:28 1183Document 对象中有一个cook ... -
Javascript数组及其操作
2008-05-22 16:26 7894本文介绍如下几个方面的内容: 1.如何创建数组 2.如何对数 ... -
使用JavaScript检测浏览器的相关特性
2008-05-22 13:06 2143一、检测浏览器的名称 问题: 不同的浏览器对javas ... -
ie和firefox的兼容性问题
2008-05-22 11:21 9651.event.srcElement问题 在IE下,even ... -
学习javascript的事件
2008-05-22 11:18 949在很多语言的学习中,“事件”都是一个比较难理解,但是又是一个很 ... -
js的&&和&,||和|运算符两个不同点
2008-05-22 11:15 11741.性能上的比较 如果&&的第一个运算数是f ...
相关推荐
使用JavaScript事件综合查询,js事件大全
1.实现JavaScript事件注册;...2.实现JavaScript事件处理函数; 3.实现JavaScript鼠标和键盘事件; 4.实现JavaScript表单相关事件; 5.实现JavaScript字幕滚动事件; 6.实现JavaScript编辑事件;
javascript事件冒泡,事件捕获和事件委托详解 1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的...
JavaScript事件派发器,对单页交互应用中组件通信十分有用。个人原创,发现bug可向我github中提issue~
Js事件大全
第3章+JavaScript事件处理.pdf
Js事件大全 1.一般事件... 2 2.页面相关事件... 2 3.表单相关事件... 3 4.滚动字幕事件... 3 5.编辑事件... 3 6.数据绑定... 4
asp.net中TextBox获得焦点和失去焦点——客户端JavaScript事件 自己亲手做的 ,虽然很简单,但是很实用
[js]javascript事件集合(包有触发事件)终版.pdf
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
全面,直观javascript的事件
如何给javascript js事件传递参数.zip
javascript的事件大全,很详细的介绍
系统介绍了javascript事件,包括平常理解不透彻的捕获,冒泡等机制,值得一看
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全js事件大全
eventdispatcher.js, 自定义对象的JavaScript事件 eventdispatcher.js 自定义对象的JavaScript事件用法[removed][removed][removed]
[js]javascript事件集合(包有触发事件).pdf
[js]javascript事件集合(包有触发事件)[参考].pdf