如果你有两个window.οnlοad=function(){}
不要奇怪。
为什么会出现两个window.onload。
很久很久以前。
我一直不明白为什么 有的 JavaScript 必须写在页面的底部才会正常执行。
而放到页面的head区则没有任何反应。
后来我明白了 因为页面加载速度的原因。
有的JavaScript脚本必须等待页面加载结束 才能正常执行。
对于这样的情况有两个解决方法:
1、将脚本写到html的结束位置。这样只有html全部接在完毕后才会加载执行JavaScript脚本。
2、将脚本放在任意位置。通过 window.onload来执行脚本。
window.onload的意思是当页面加载完毕的时候执行。
很久很久以后,我遇到了一个新的问题。
我有两个window.οnlοad=function(){};
我自己写一个函数(T_T不是类,我蹩脚的JavaScript还不会封装类哦!)。这个函数必须在页面加载完毕之后才能正常执行。
开始我就写了一个window.onload来执行这个函数。
然后我发现了这行不通。
我写这个函数就是为了封装好给别人用的。
最终目的是 只要在页面里引用这个JavaScript脚本就可以实现相关功能。
但是现在这个脚本占用了window.onload……。
而通常一个页面是只能执行一个window.onload的。
假设某个用户使用了我这个脚本。
而他因为其他原因需要用到window.onload那不是冲突了……。
两个只能活一个啊……。
那假如我有两个window.onload应该怎么办呢?
这时就要用window.attachEvent和window.addEventListener来解决一下。
当某一事件被触发时需要执行某个函数,在IE下可用attachEvent,在FF下则要用addEventListener。
attachEvent()有两个参数,第一个是事件名称,第二个是需执行的函数;
addEventListener()有三个参数,第一个是事件名称,但与IE事件不同的是,事件不带"on",比如"onsubmit"在这里应为"submit",第二个是需执行的函数,第三个参数为布尔值;
if (document.all){
window.attachEvent('onload',函数名)//IE中
}
else{
window.addEventListener('load',函数名,false);//firefox
}
使用上边的脚本来执行我的函数就可以不与其他的onload冲突啦!
这真是太爽了!
看到prototype.js中有个Event.observe的方法可以实现这种功能。不过为了这个在加载个prototype.js。有点累赘哦。
解决多个window.onload的冲突.txt
window.οnlοad=function(){
alert("加载完成");
onload2();
onload3();
}
珍藏多年的搜黄抠妹版软件-男人必备,今天拿出来分享要的速度: