代码之家  ›  专栏  ›  技术社区  ›  J.Hendrix

在页面呈现IE6后执行javascript

  •  0
  • J.Hendrix  · 技术社区  · 15 年前

    在IE6中完全呈现页面之前,我遇到了一些运行的javascript的问题(可能还有其他版本,但现在只测试IE6)。火狐似乎没问题)。我可以打电话给JS解决这个问题 window.onload 这样地:

    window.onload = function(){doIt();}
    

    不过,我担心的是,我会改写可能已经存在的任何内容 上载窗口 . 代码将作为库的一部分使用,因此我不能保证 上载窗口 不会被其他人设置到其他地方。我宁愿将我的函数附加到 onload 类似事件:

    window.onload += function(){doIt1();}
    window.onload += function(){doIt2();}
    

    但当我这样做的时候,只有 doit2() 被称为。当页面完全呈现时,是否可以注册事件处理程序?我的第二个想法是在运行之前将代码放入循环检查,以确保所有对象都存在。但我担心这可能会锁定浏览器。

    只是为了了解一些背景信息,我的代码隐藏/显示iframes。我知道我可以用iframe 加载 但我需要在调用代码之前完全加载所有iframe。

    社区有什么想法吗?提前感谢您的输入。

    1 回复  |  直到 15 年前
        1
  •  6
  •   Josh Stodola    15 年前

    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 为您处理这样的已知问题。