如何在整个页面加载包括图像时启动JS代码(真实完整)

时间:2010-04-12 10:54:15

标签: javascript html onload

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

目前的方式是:

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页面中发出警报,然后在较慢的服务器上试用,其父页面包含大图像等。

3 个答案:

答案 0 :(得分:4)

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

  

加载事件在结束时触发   文件加载过程。在这   点,所有的对象   文档在DOM中,全部   图像和子帧已经完成   负荷。

     

来源:Mozilla Dev Center: window.onload

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


<强>更新

bobince in another answer确定了您的实施不起作用的原因。解决方案是使用:

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

答案 1 :(得分:4)

  

的window.onload =的document.getElementById( '加载')值= 1;

你忘了把它变成一个功能。你在说什么:

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

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

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

答案 2 :(得分:-1)

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