【问题标题】:How to start a JS code when the whole page has loaded including images (real on complete)加载整个页面(包括图像)后如何启动 JS 代码(完整时真实)
【发布时间】:2011-02-06 23:08:46
【问题描述】:

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

目前的方式是:

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 页面中添加警报,然后在速度较慢的服务器上尝试,您的父页面包含大图像等。

【问题讨论】:

    标签: javascript html onload


    【解决方案1】:

    window.onload 事件应等待图像加载后才被触发:

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

    来源:Mozilla Dev Center: window.onload

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


    更新:

    bobince in another answer 已确定您的实施无法正常工作的原因。解决方案是使用:

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

    【讨论】:

    • 在 Chrome 和 Firefox 中当然不适合我。问题是我在返回状态 204 之后启动了一个代码,这会阻止未来的加载。但是它在页面完成加载之前返回了这个 204 状态。所以我需要在页面真正加载后执行我的代码。
    • @Pentium10:这很有趣。您认为您可以发布一个非常简短的代码示例来重现此问题吗?
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • +1 详细解释,实际解决 OP 的问题!
    【解决方案3】:

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

    【讨论】:

    • 我确信 OP 说的是 iframe;可能搞砸了另一个问题:)。
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2011-05-20
    • 2018-02-15
    相关资源
    最近更新 更多