要测试页面是否已加载,可以在窗口上添加一个“加载”事件监听器:
window.addEventListener ("load", function(){});
但在某些情况下,即使所有内容都已加载,此事件也永远不会触发:假设您想在页面加载时执行一些 JS,但该页面并没有像往常一样获取。它在没有设置其“src”属性的情况下加载到 iframe 中,而是通过执行
iframe.contentWindow.document.write ("<!DOCTYPE html><html>...</html>");
在这种情况下,不会引发“加载”事件。
但是无论如何,在这个页面内,仍然有必要知道页面何时“加载”,开始一些 js 的东西。
我可以假设如果到达 html 的末尾,则页面已加载吗?如果答案是"is",则在 <script>
中启动 JS页面末尾的标签可以解决问题...
换句话说:在正常的加载工作流中(通过设置“src”属性),一些其他的“init”进程仍然在页面末尾异步运行(如 css 引擎 init 进程),而“load "仅当所有这些进程终止时才触发事件?使用 document.write
加载页面时是否也存在这些进程? ?
感谢您的关注。
最佳答案
标题中问题的答案是否定的。
实际上 DOMContentLoaded
当 </body>
时触发已满足,但例如某些图像仍可能处于加载状态。 window.onload
在加载页面的所有内容和资源(如图像和 iframe 的内容)后触发。
当您使用 document.write()
写入任何文档时在该页面被解析后,write()
隐含地打开文档,但不会关闭它。文档打开时无法触发“就绪”事件。因此在 document.write()
之后(s) 您必须手动关闭文档:
document.close();
关于javascript - 到达 html 页面的末尾等于 "page loaded"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610063/