我在网站上有以下代码:
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
答案 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)必须驻留(或定义)在相同的