页面呈现IE6后执行Javascript
在IE6中完全呈现页面之前,我在运行一些JavaScript时遇到了问题(可能还有其他版本,但现在只是测试IE6。Firefox似乎还可以)。我可以通过在页面呈现IE6后执行Javascript,javascript,iframe,internet-explorer-6,rendering,onload,Javascript,Iframe,Internet Explorer 6,Rendering,Onload,在IE6中完全呈现页面之前,我在运行一些JavaScript时遇到了问题(可能还有其他版本,但现在只是测试IE6。Firefox似乎还可以)。我可以通过在窗口上调用js来解决这个问题。onload如下所示: window.onload = function(){doIt();} window.onload += function(){doIt1();} window.onload += function(){doIt2();} 但是,我担心的是,我将覆盖窗口.onload中可能已经存在的任何
窗口上调用js来解决这个问题。onload
如下所示:
window.onload = function(){doIt();}
window.onload += function(){doIt1();}
window.onload += function(){doIt2();}
但是,我担心的是,我将覆盖窗口.onload
中可能已经存在的任何内容。代码将作为库的一部分使用,因此我不能保证其他人不会在其他地方设置window.onload
。我宁愿将我的函数附加到onload
事件中,如下所示:
window.onload = function(){doIt();}
window.onload += function(){doIt1();}
window.onload += function(){doIt2();}
但是当我这样做时,只调用doit2()
。有没有办法在页面完全呈现时注册事件处理程序?我的第二个想法是将我的代码放入循环检查中,以确保在运行之前所有对象都存在。但我担心这可能会锁定浏览器
只是为了一些背景信息,我的代码正在隐藏/显示iFrame。我知道我可以使用iFrame的onload
属性,但我需要在调用代码之前完全加载所有iFrame
社区有什么想法吗?提前感谢您的输入。使用此通用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!");
}
我想提到的是,像这样的库会为您解决类似这样的已知问题。使用此通用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!");
}
我想说的是,像这样的库会为您解决类似这样的已知问题。快速响应!和我要说的差不多!为了清晰起见,您可能需要将示例用法放入代码块中。值得注意的是,这将始终将新函数添加到被调用链的末尾。这可以通过改变第二部分中
func()
和oldload()
调用的顺序来改变,或者如果需要改变,也可以通过向函数传递第二个变量来改变。是的,这个答案让我获得了超过10000个rep:)快速响应!和我要说的差不多!为了清晰起见,您可能需要将示例用法放入代码块中。值得注意的是,这将始终将新函数添加到被调用链的末尾。这可以通过改变第二部分中func()
和oldload()
调用的顺序来改变,或者如果需要改变,也可以通过向函数传递第二个变量来改变。是的,这个答案让我超过了10000个rep:)