使用DOMContentLoaded事件来替代.onload,给具体的一个必须先等待src图片加载完后再运行的函数的替代前和替代后的前后对比代码示例
时间: 2024-10-14 09:16:39 浏览: 30
使用`DOMContentLoaded`事件代替传统的`.onload`可以提升页面渲染的速度,因为`DOMContentLoaded`会在文档的结构解析完成(DOM树构建完毕),但图像和其他外部资源可能还在加载时触发。这使得你的脚本可以在HTML元素加载完成后立即执行,而不是需要等到所有资源都下载完毕。
```html
<!-- 传统使用.onload的示例 -->
<body onload="myFunction()">
<img src="image.jpg" id="myImage">
<script>
function myFunction() {
// 这里可能会在图片还没加载完时就执行,可能导致错误或未预期的行为
var img = document.getElementById('myImage');
if (img.complete) { // 判断图片是否已加载
// 执行依赖于图片的代码
}
}
</script>
</body>
```
```html
<!-- 使用DOMContentLoaded的示例 -->
<body>
<img src="image.jpg" id="myImage">
<script>
// 使用DOMContentLoaded事件,确保DOM加载完毕再执行
window.addEventListener('DOMContentLoaded', function() {
var img = document.getElementById('myImage');
if (img.complete) { // 图片加载已完成
// 现在可以安全地执行依赖于图片的代码
// ...
} else {
console.log("图片正在加载...");
}
});
</script>
</body>
```
在这个例子中,使用`DOMContentLoaded`后,只有当整个HTML结构加载完毕,包括图片,才会执行`myFunction()`中的代码,避免了提前执行导致的问题。
阅读全文