页面呈现IE6后执行Javascript

页面呈现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中可能已经存在的任何

在IE6中完全呈现页面之前,我在运行一些JavaScript时遇到了问题(可能还有其他版本,但现在只是测试IE6。Firefox似乎还可以)。我可以通过在
窗口上调用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:)