4

我想在整个页面加载完成后执行一个脚本。

目前的方法是:

window.onload=document.getElementById('loaded').value=1;

这不好,因为一些图像仍在加载中,页面还没有真正完成加载。我做错了什么?

在 Chrome 和 Firefox 中当然不适合我。问题是我之后启动了一个代码,它返回状态 204,这会阻止未来的加载。但是它在页面完成加载之前返回了这个 204 状态。所以我需要在页面真正加载后执行我的代码。

编辑

设置一个页面,它会破帧

<iframe id="myframe" height=1 width=1></iframe> 
<script type="text/javascript"> 
window.onload=document.getElementById('myframe').src='http://link to a frame braker page';
</script>

当您将上述代码放入页面时,它会在页面完全加载之前加载 iframe。只需在 iframe 页面中放置一个警报,然后在您的父页面包含大图像等的较慢服务器上尝试。

4

3 回答 3

4

window.onload事件应在触发之前等待图像加载:

load 事件在文档加载过程结束时触发。至此,文档中的所有对象都在 DOM 中,所有图片和子帧都加载完毕。

来源:Mozilla 开发中心:window.onload

您可能需要查看以下 Stack Overflow 帖子以进一步阅读:


更新:

bobince 在另一个答案中确定了您的实施不起作用的原因。解决方案是使用:

window.onload = function() {
    document.getElementById('loaded').value = '1';
};
于 2010-04-12T10:57:57.720 回答
4

window.onload=document.getElementById('loaded').value=1;

你忘了把它变成一个函数。你说的是:

document.getElementById('loaded').value= 1;
window.onload= 1;

显然,这作为负载检测器不是很有效。你的意思可能是:

window.onload= function() {
    document.getElementById('loaded').value= '1';
};
于 2010-04-12T11:57:21.447 回答
-1

如果您可以使用 Jquery,请查看FrameReady插件。
检查这个SO 问题。了解更多信息

于 2010-04-12T10:59:58.720 回答