这一段脚本为什么在不同浏览器中执行顺序不一样?

bhbhxy 2010-08-03 09:39:14
<script>
function a() {alert("a");}
function b() {alert("b");}

function addEvent(obj,type,fn) {
if(obj.addEventListener) {
obj.addEventListener(type,fn,false);
return true;
}
else if(obj.attachEvent) {
return obj.attachEvent("on"+type,fn);
}
else {
return false;
}
}

addEvent(window,'load',a);
addEvent(window,'load',b);
</script>

代码如上,在IE6中先执行了b函数,再执行a函数,而在firefox中先执行a函数再执行b函数,个人认为firefox的执行是正确的,但是为什么IE6先执行b呢?怎么让它们的执行顺序一致?请教js大神们~
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd5816690 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bhbhxy 的回复:]
能解释一下为什么会这样吗?
上面那个方法感觉和window.onload一样了
[/Quote]
这个我也不知道。。。浏览器差异吧。。。看看其他人怎么说
WebAdvocate 2010-08-03
  • 打赏
  • 举报
回复
事件的执行,跟它的绑定还有 是否捕获有关系。
一般来说遵循先进先出的概念,Chrome,Firefox 都遵循这个规则。但IE中是没有顺序可言的。lz可以多试几个
<script>
function a() {alert("a");}
function b() {alert("b");}
function c() {alert("c");}
function d() {alert("d");}
function e() {alert("e");}

function addEvent(obj,type,fn) {
if(obj.addEventListener) {
obj.addEventListener(type,fn,false);
return true;
}
else if(obj.attachEvent) {
return obj.attachEvent("on"+type,fn);
}
else {
return false;
}
}

addEvent(window,'load',a);
addEvent(window,'load',b);
addEvent(window,'load',c);
addEvent(window,'load',d);
addEvent(window,'load',e);
</script>
bhbhxy 2010-08-03
  • 打赏
  • 举报
回复
能解释一下为什么会这样吗?
上面那个方法感觉和window.onload一样了
sd5816690 2010-08-03
  • 打赏
  • 举报
回复
addEvent(window,'load',function(){
a();
b();
});

61,114

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧