You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iframe的onload事件在浏览器刷新时未触发的原因及解决方案咨询

iframe的onload事件在浏览器刷新时未触发的原因及解决方案咨询

我有一个网页,在头部的<script>标签最后一行调用了一个名为myonload的onload方法:

...
<head>
...
<script>
var frame;

function loadthis(e,pg) {
    // 50行代码,根据不同条件设置frame.src
    if...
        frame.src = pg;
    else...
        frame.src = ...
}

function myonload() {
    frame = document.getElementById("MainFrame")
    frame.onload = function(e) { ... }
    ...

    var frm = "https://mydefaultpage.html";
    var parameters = window.location.search.substring(1).split("?");
    var temp = parameters[0].split("=");
    if (temp.length > 1) {
       frm = unescape(temp[1]);
       document.getElementById("loader-wrapper").style.display = "block";
       loadthis("null",frm);
    } else {
       loadthis(88,frm);
    }
}

window.onload = myonload;
</script>
</head>
<body>
....
<div id="MainFrameDiv">
 <iframe id="MainFrame" name="MainFrame"></iframe>
</div>
</body>

文档里有一个名为MainFrame的iframe。如上所示,在myonload函数内部,我设置了一个函数来检测这个iframe是否加载完成:

function myonload() {
    frame = document.getElementById("MainFrame")
    frame.onload = function(e) { ... }
    ...
}

一切都按预期工作,除了当我按下浏览器刷新按钮时,frame.onload不会被触发。不过如果我用Ctrl-Shift-R强制刷新页面的话,它又能正常工作了。

现在,如果我把:

window.onload = myonload;

替换成:

document.addEventListener('DOMContentLoaded', myonload);

这个问题似乎就解决了。

想问问这是为什么?以及如何正确处理刷新的情况?

备注:内容来源于stack exchange,提问作者Luis A. Florit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:57:57