关于javascript中的事件学习及总结
2008-04-09 13:05
621 查看
1关于事件对象
ie:事件对象是window对象的一个属性event
dom:event对象是作为唯一参数传递给事件处理函数。arguments[0]
2关于IE与DOM事件兼容性的总结(参考javascript高级程序设计)
具体的属性和方法意思我就不写清楚了,有不太明白的可以baidu、google一下~
3关于跨平台事件(针对第二点各个属性在ie和ff下的不同)
在这里javascript高级程序设计一书总结了一个容器对象,可以方便的解决事件兼容性问题。
具体如下:
<html>
<head>
<script>
var app = function()
var foo1 = function()
var foo2 = function()
</script>
</head>
<body onload="app()">
<p id="mypp">test</p>
</body>
</html>
答案是上面的代码会先执行第二个alert。
如果你觉得你的思维是正确的那么再看看下面的代码:
test2
<html>
<head>
<script>
var app = function()
{
var obj = document.getElementById("mypp");
obj.attachEvent("onclick",foo1);
obj.attachEvent("onclick",foo2);
obj.attachEvent("onclick",foo3);
obj.attachEvent("onclick",foo4);
obj.attachEvent("onclick",foo5);
obj.attachEvent("onclick",foo6);
obj.attachEvent("onclick",foo7);
}
var foo1 = function(){alert("1");};
var foo2 = function(){alert("2");};
var foo3 = function(){alert("3");};
var foo4 = function(){alert("4");};
var foo5 = function(){alert("5");};
var foo6 = function(){alert("6");};
var foo7 = function(){alert("7");};
</script>
</head>
<body onload="app()">
<p id="mypp">test</p>
</body>
</html>
一段关于此的英文解释:
When event fires on the object, the object's event handler is called before pDisp, the specified function. If you attach multiple functions to the same event on the same object, the functions are called in random order, immediately after the object's event handler is called.
引用网上一位高人说的:
并不是什么随机问题,你可以去研究研究哈希对象,这种对象插入新元素的时候并不是顺序插入的,而是根据计算所得的hash值而定的,但在取用这些对象的时间是按照一定的顺序取的,所以就会出现你这种所谓的乱序问题。我估计DHTML里的这些对象的事件处理函数存放及JS对象都是一个个哈希对象,都是key-value这种键值对的模式。
所以在使用上还是要慎重的,最好不要做依赖于顺序的设计。
ie:事件对象是window对象的一个属性event
dom:event对象是作为唯一参数传递给事件处理函数。arguments[0]
2关于IE与DOM事件兼容性的总结(参考javascript高级程序设计)
DOM属性/方法 | IE属性/方法 |
altKey | altKey |
bubbles | - |
button | button |
cancelBubble | cancelBubble |
charCode | keyCode |
clientX | clientX |
clientY | clientY |
ctrlKey | ctrlKey |
currentTarget | - |
detail | - |
eventPhase | - |
isChar | - |
keyCode | keyCode |
metaKey | - |
pageX | clientX+document.body.scrollLeft |
pageY | clientY+document.body.scrollTop |
preventDefault() | returnValue = false |
relateTarget | fromElement/toElement |
screenX | screenX |
screenY | screenY |
shiftKey | shiftKey |
stopPropagation() | cancelBubble = true |
target | srcElement |
timeStamp | - |
type | type |
3关于跨平台事件(针对第二点各个属性在ie和ff下的不同)
在这里javascript高级程序设计一书总结了一个容器对象,可以方便的解决事件兼容性问题。
具体如下:
<html>
<head>
<script>
var app = function()
var foo1 = function()
var foo2 = function()
</script>
</head>
<body onload="app()">
<p id="mypp">test</p>
</body>
</html>
答案是上面的代码会先执行第二个alert。
如果你觉得你的思维是正确的那么再看看下面的代码:
test2
<html>
<head>
<script>
var app = function()
{
var obj = document.getElementById("mypp");
obj.attachEvent("onclick",foo1);
obj.attachEvent("onclick",foo2);
obj.attachEvent("onclick",foo3);
obj.attachEvent("onclick",foo4);
obj.attachEvent("onclick",foo5);
obj.attachEvent("onclick",foo6);
obj.attachEvent("onclick",foo7);
}
var foo1 = function(){alert("1");};
var foo2 = function(){alert("2");};
var foo3 = function(){alert("3");};
var foo4 = function(){alert("4");};
var foo5 = function(){alert("5");};
var foo6 = function(){alert("6");};
var foo7 = function(){alert("7");};
</script>
</head>
<body onload="app()">
<p id="mypp">test</p>
</body>
</html>
一段关于此的英文解释:
When event fires on the object, the object's event handler is called before pDisp, the specified function. If you attach multiple functions to the same event on the same object, the functions are called in random order, immediately after the object's event handler is called.
引用网上一位高人说的:
并不是什么随机问题,你可以去研究研究哈希对象,这种对象插入新元素的时候并不是顺序插入的,而是根据计算所得的hash值而定的,但在取用这些对象的时间是按照一定的顺序取的,所以就会出现你这种所谓的乱序问题。我估计DHTML里的这些对象的事件处理函数存放及JS对象都是一个个哈希对象,都是key-value这种键值对的模式。
所以在使用上还是要慎重的,最好不要做依赖于顺序的设计。
相关文章推荐
- java基础学习总结——关于Java中事件分发和监听机制实现的代码实例
- javascript学习总结之(事件,函数等)
- 关于对HTML CSS Javascript 的学习总结
- CocosCreator项目学习系列<二>关于Button(添加事件)输入控制交互条件的触发_实现虚拟按钮控制_JavaScript
- 关于javascript事件总结和自己的心得体会
- JavaScript学习总结(九)事件详解
- JavaScript学习——JS事件总结
- Javascript学习笔记十三——关于响应事件
- JavaScript学习总结(九)事件详解
- 关于JavaScript中事件绑定的方法总结
- javascript中的事件学习总结
- JavaScript第五天学习--事件总结
- 黑马程序员--Java学习笔记之Web开发—JavaScript常用触发事件总结
- 关于javascript事件响应的基础语法总结(必看篇)
- JavaScript学习总结(九)事件详解
- 计入学习总结javascript事件
- Javascript学习笔记13——关于响应事件
- [学习总结]4、Android的ViewGroup中事件的传递机制(一)
- 学习委托与事件的总结,附上一个例子
- 如何理解AMD ,CMD,CommonJS规范--javascript模块化加载学习总结