在IE 6中完全呈现页面之前,我遇到了一些运行JavaScript的问题(可能还有其他版本,但现在只测试IE6.Firefox似乎没问题)。我可以通过这样调用window.onload
上的j来解决这个问题:
window.onload = function(){doIt();}
但是,我担心的是我会覆盖window.onload
中可能存在的任何其他内容。代码将用作库的一部分,因此我无法保证window.onload
不会被其他人设置在其他位置。我宁愿将我的函数添加到onload
事件中,如下所示:
window.onload += function(){doIt1();}
window.onload += function(){doIt2();}
但是当我这样做时,只调用doit2()
。有没有办法在页面完全呈现时注册事件处理程序?我的第二个想法是将我的代码放在一个循环检查中,以确保在运行之前我的所有对象都存在。但我担心这可能会锁定浏览器。
仅仅为了一些背景信息,我的代码隐藏/显示了iFrame。我知道我可以使用iFrame的onload
属性,但我需要在调用代码之前完全加载所有iFrame。
来自社区的任何想法?提前感谢您的投入。
答案 0 :(得分:6)
使用此通用addLoadEvent函数...
function addLoadEvent(func) {
if(typeof window.onload != 'function')
window.onload = func;
else {
var oldLoad = window.onload;
window.onload = function() {
if(oldLoad) oldLoad();
func();
}
}
}
这实际上排队了要执行的函数。它永远不会覆盖先前分配的处理程序。以下示例用法......
addLoadEvent(function() { alert("One!"); });
addLoadEvent(two);
function two() {
alert("Two!");
}
我想提一下像jQuery这样的图书馆为你处理这样的已知问题。