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
相关产品推荐
相关产品推荐

