window.onload
从我的阅读看来,它可以与document.onload
但我的经验表明这是不正确的。我继承了一个 JS 脚本,但我不知道如何纠正它。我希望 JS 在 DOM 加载后执行,而不是在所有资源加载后执行。我怎样才能做到这一点?
目前我有:
window.onload = initDropMenu;
我试过了:
document.onload = initDropMenu;
这只会导致菜单无法加载。我还尝试从 JS 中完全删除该行,然后让 DOM 通过以下方式执行它:
<body onload="initDropMenu()">
这也导致没有菜单,并且控制台中没有错误。我的 JS 知识有限,我在这里缺少什么?
在窗口上加载事件:
load 事件在文档加载过程结束时触发。在
此时,文档中的所有对象都在 DOM 中,并且全部
图像、脚本、链接和子框架已完成加载.
[来源:开发者.mozilla.org]
<script>
window.onload = function(){ init(); };
</script>
HTML 元素上的加载事件:
The load
当资源和它的依赖
资源已完成加载。
[来源:开发者.mozilla.org]
<!-- When the image is loaded completely -->
<img onload="image_loaded()" src="w3javascript.gif">
<!-- When the frame is loaded completely (including all resources) -->
<iframe onload="frame_loaded()" src="about.html">
<!-- When body loaded completely (including all resources, images and iframes) -->
<body onload="init()">
许多论坛甚至本站的一些答案可能会误导您,但是load
body 元素上的事件是不仅相当于 load
窗口上的事件,它是完全相同的事件。下面的引用澄清了这一点。
由于历史原因,某些属性/属性<body>
and
<frameset>
元素实际上在其父窗口上设置事件处理程序
目的。 (HTML 规范将这些命名为:onblur、onerror、onfocus、
加载、滚动。)
[来源:开发者.mozilla.org]
DOMContentLoaded 事件:
开发人员应该使用的是DOMContentLoaded
文档上的事件。当 html 完全加载并解析时它会触发。
document.addEventListener("DOMContentLoaded", function(event) {
alert("Document is ready");
});
当初始 HTML 文档已加载时,将触发 DOMContentLoaded 事件
已完全加载和解析,无需等待样式表,
图像和子帧以完成加载。非常不同的事件负载
应该仅用于检测完全加载的页面。这是一个令人难以置信的
使用 load 的常见错误是 DOMContentLoaded 会更多
合适,所以要谨慎。
[来源:开发者.mozilla.org]
也许这是关于该主题的唯一具有适当参考文献的答案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)