我遇到了问题window.onload
and document.onload
事件。我读到的所有内容都告诉我,在 DOM 完全加载所有资源之前,这些不会触发,这似乎不会发生在我身上:
我在 Chrome 4.1.249.1036 (41514) 和 IE 8.0.7600.16385 中尝试了以下简单页面,结果相同:都显示消息“失败!”,表明myParagraph
未加载(因此 DOM 看起来不完整)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript">
window.onload = doThis();
// document.onload gives the same result
function doThis() {
if (document.getElementById("myParagraph")) {
alert("It worked!");
} else {
alert("It failed!");
}
}
</script>
</head>
<body>
<p id="myParagraph">Nothing is here.</p>
</body>
</html>
我在外部 .js 文件中使用比这更复杂的脚本,但这说明了问题。我可以通过以下方式让它工作window.onload
设置一个半秒的计时器来运行doThis()
,但这似乎是一个不优雅的解决方案,并且没有回答为什么的问题window.onload
似乎并没有按照大家所说的那样做。另一个解决方案是设置一个计时器来检查 DOM 是否已加载,如果没有加载,它会在半秒后调用自己(因此它将继续检查,直到加载 DOM),但这对我来说似乎过于复杂。
有没有更合适的事件可以使用?
加载窗口时,主体尚未加载,因此您应该按以下方式更正代码:
<script type="text/javascript">
window.onload = function(){
window.document.body.onload = doThis; // note removed parentheses
};
function doThis() {
if (document.getElementById("myParagraph")) {
alert("It worked!");
} else {
alert("It failed!");
}
}
</script>
测试可在 FF/IE/Chrome 中工作,但考虑处理document.onload
too.
正如已经提到的,使用 js 框架将是一个更好的主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)