有关于多事件监听的执行顺序
在编写JS中,有时候可能需要在某个对象中进行多个函数监听,但是,实际应用中,我发现IE中多事件监听时的执行顺序是反着执行的,但FireFox中确实按照监听顺序执行。
写一段通用的给window.onload添加事件监听的代码:
/*
* Just Test addEventLister For IE And FireFox
*/
addEvent = function(ename, func){
if(typeof(window.addEventListener)!=’undefined’){
window.addEventListener(ename, func, false);
}else if(typeof(document.addEventListener)!=’undefined’){
document.addEventListener(ename, func, false);
}else if(typeof(window.attachEvent)!=’undefined’){
window.attachEvent(‘on’ + ename, func);
}else {
var lodfunc = window.onload;
if(typeof(oldfunc)==’function’){
window.onload = func;
}else {
window.onload = function(){
oldfunc();
func();
}
}
}
}
然后我们给window.onload添加多个事件:
addEvent(‘load’, function(){ alert(‘1′);});
addEvent(‘load’, function(){ alert(‘2′);});
addEvent(‘load’, function(){ alert(‘3′);});
addEvent(‘load’, function(){ alert(‘4′);});
addEvent(‘load’, function(){ alert(‘5′);});
addEvent(‘load’, function(){ alert(‘6′);});
addEvent(‘load’, function(){ alert(‘7′);});
addEvent(‘load’, function(){ alert(‘8′);});
addEvent(‘load’, function(){ alert(‘9′);});
addEvent(‘load’, function(){ alert(‘10′);});
IE6执行的情况是3、 5、 7、 9、 10、 8、 6、 4、 2、 1,感觉有些什么规律,3 5 7 9,10 8 6 4 2 。说不上来。
其他IE7以上的浏览器都是按照添加顺序的倒序执行的:10,9,8,7,6,5,4,3,2,1
Firefox,Chrome,Opera等非IE浏览器基本都是按照添加顺序执行的:1,2,3,4,5,6,7,8,9,10
不解,上网搜索,有人说IE里面执行是hash表随机的,不懂。


欢迎订阅:
最新评论
热评文章