如何在不使用JavaScript库的情况下检查DOM的HTML组件何时加载?
How do I check when the HTML component of the DOM has loaded without using a JavaScript library?
我想检测<body>
元素何时完成从外部脚本加载到DOM,而不使用外部JavaScript库。我不想使用document.ready
或window.onload
,因为它们不会触发,直到整个DOM(包括所有外部文件)完成加载。
对于现代浏览器使用
window.addEventListener('DOMContentLoaded', function() {
// dom is ready
}, false);
对于IE8使用
window.onload = function() {
// dom is ready
};
为什么不把脚本放在结束body标签的正上方
<body>
..
....
....
<script type="text/javascript".....
</script>
</body>
确保所有内容都已加载
作为对注释
的回应把这段代码放在文档的头部
适用于IE8及更早版本的ie
window.onload= function() {
var script=document.createElement("script");
script.src=url; // here use the url of the script
document.body.appendChild(script);
};
为别人window.attachEventListener("DOMContentLoaded",function() {
var script=document.createElement("script");
script.src=url; // here use the url of the script
document.body.appendChild(script);
},false);
这是一个适用于所有浏览器的简单解决方案:
-
在HTML的
</body>
标签上方插入以下代码:<script type="text/javascript"> try { ONLOAD() } catch(e) { ONLOADq=1 } </script> MINIFIED: <script type="text/javascript">try{ONLOAD()}catch(e){ONLOADq=1}</script>
-
在外部javascript中插入以下代码:
if ( typeof ONLOADq === 'number') { ONLOAD() };
-
将需要在页面加载时运行的外部javascript中的所有代码放入一个名为
ONLOAD
的函数中。例如:function ONLOAD() { document.body.appendChild(ST1) };
第一部分涵盖了外部javascript在HTML之前完成加载的实例,第二部分,反之亦然。
相关文章:
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 如何序列化包括影子 DOM 在内的 HTML DOM
- 通过Java加载XML并制作HTML DOM的一部分
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- HTML DOM Text() nodes
- 递归单步执行 HTML DOM 并打印属性
- 从自身获取对脚本作为 HTML DOM 元素的引用
- 我可以将 HTML 字符串分配给 HTML DOM 节点的内部 HTML 属性吗?
- Javascript HTML DOM select
- 如何反转 JavaScript 变量中 HTML DOM 元素的顺序
- 在 HTML DOM 元素下添加 javascript 文件或 css 文件
- HTML DOM - element.appendChild() 的行为不像我期望的那样
- HTML DOM 使用 AngularJS ng-if 函数
- PHP 简单 HTML DOM 和下拉元素已选选项
- 将 HTML DOM 保存到服务器上的文件
- 为什么我的 HTML 按钮刷新页面?/为什么我不能让我的新 HTML DOM 元素插入到我的页面中
- 节点上的 d3 事件处理程序不在 HTML DOM 中
- 如何转换 HTML DOM 结构
- HTML/DOM:鼠标事件更改按钮
- HTML DOM alerting style.width