JavaScript事件window.onload未触发

时间:2010-05-11 12:56:10

标签: javascript onload onload-event

我在网站上有以下代码:

 window.onload = resize;
 window.onresize = resize;

 function resize(){
  heightWithoutHeader = (window.innerHeight - 85) + "px"; 
  document.getElementById("main-table").style.height = heightWithoutHeader;
  document.getElementById("navigation").style.height = heightWithoutHeader;
 }

onresize工作正常,但onload事件永远不会发生。我已经在Firefox和Chrome中尝试过它,但它们都不起作用。

感谢您的帮助,并获得声誉! ; d

9 个答案:

答案 0 :(得分:69)

我认为这里可能发生的事情是你的window.onload稍后被覆盖,请检查以确保它不是通过像<body onload="">这样的事情

您可以在重新调整大小的函数中通过alert(window.onload)进行检查,以查看实际附加的内容。

答案 1 :(得分:23)

当我添加合作伙伴所需的第三方jQuery代码时,我发生了这种情况。我可以轻松地将我过时的window.onload转换为jQuery文档。也就是说,我想知道是否有现代的跨浏览器兼容解决方案。

有!!

window.addEventListener ? 
window.addEventListener("load",yourFunction,false) : 
window.attachEvent && window.attachEvent("onload",yourFunction);

知道我知道,我可以将我的代码转换为使用jQuery路由。而且,我会要求我们的合作伙伴重构他们的代码,以免他们停止影响网站。

我找到修复程序的来源 - &gt; http://ckon.wordpress.com/2008/07/25/stop-using-windowonload-in-javascript/

答案 2 :(得分:2)

将window.onload行移动到javascript文件的末尾或初始函数之后,它将起作用:

function resize(){
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader;
    document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.onload = resize;
window.onresize = resize;

但如果你也不替换onload,这是最好的做法。而是将您的函数附加到onload事件:

function resize(){
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader;
    document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.addEventListener ? 
    window.addEventListener("load",resize,false) 
    : 
    window.attachEvent && window.attachEvent("onload",resize);

这对我有用,对不起我的英语。

答案 3 :(得分:1)

这对我有用,我认为你的问题出在其他地方:

 function resize(){
  var tester = document.getElementById("tester"),
      html = tester.innerHTML

  tester.innerHTML = html + "resize <br />"
 }  

window.onload = resize;
window.onresize = resize;

你可以在这里自己测试一下: http://jsfiddle.net/Dzpeg/2/

你确定它是唯一一个名为onLoad的事件吗?也许其他onLoad事件会产生冲突

答案 4 :(得分:0)

当您调用函数resize()

旁边的“window.onload”时,这将起作用

答案 5 :(得分:0)

对我来说,//import org.apache.pdfbox.encoding.DictionaryEncoding; //import org.apache.pdfbox.encoding.Encoding; //import org.apache.pdfbox.pdfviewer.PageDrawer; //import org.apache.pdfbox.pdmodel.common.PDMatrix; //import org.apache.pdfbox.pdmodel.graphics.PDGraphicsState; //import org.apache.pdfbox.pdmodel.graphics.color.PDColorState; //import org.apache.pdfbox.pdmodel.text.PDTextState; //import org.apache.pdfbox.util.TextPosition; window.onload标记内写道时无效。

相反,需要在script type="text/javascript标记中编写相同内容并且它运行正常。

答案 6 :(得分:0)

此答案适用于因为未触发window.onload而来到这里的人。

我发现下面的方法可以工作

window.onload = myInitFunction;

window.addEventListener("load", myInitFunction);

所引用的函数(在这种情况下为myInitFunction)必须驻留(或定义)在相同的