摘要:在本教程中,您将学习如何在 JavaScript 中处理文档、图像和脚本元素上触发的 load 事件。
窗口的 load 事件
对于 window 对象,load 事件在整个网页(HTML)完全加载后触发,包括所有资源,如 JavaScript 文件、CSS 文件和图像。
要处理 load 事件,您使用 addEventListener() 方法注册事件侦听器
window.addEventListener('load', (event) => {
console.log('The page has fully loaded');
});Code language: JavaScript (javascript)或者,您可以使用 window 对象的 onload 属性
window.onload = (event) => {
console.log('The page has fully loaded');
};Code language: JavaScript (javascript)如果您维护一个遗留系统,您可能会发现 load 事件处理程序在 HTML 文档的 body 元素中注册,如下所示
<!DOCTYPE html>
<html>
<head>
<title>JS load Event Demo</title>
</head>
<body onload="console.log('Loaded!')">
</body>
</html>Code language: HTML, XML (xml)最好尽可能使用 addEventListener() 方法来分配 onload 事件处理程序。
图像的 load 事件
load 事件也会在图像上触发。要处理图像上的 load 事件,您使用图像元素的 addEventListener() 方法。
以下示例使用 load 事件处理程序来确定 DOM 树中存在的图像是否已完全加载
<!DOCTYPE html>
<html>
<head>
<title>Image load Event Demo</title>
</head>
<body>
<img id="logo">
<script>
let logo = document.querySelector('#logo');
logo.addEventListener('load', (event) => {
console.log('Logo has been loaded!');
});
logo.src = "logo.png";
</script>
</body>
</html>
Code language: HTML, XML (xml)您可以使用 <img> 元素的 onload 属性直接分配 onload 事件处理程序,如下所示
<img id="logo"
src="logo.png"
onload="console.log('Logo loaded!')">
Code language: HTML, XML (xml)如果您动态地创建图像元素,则可以在设置 src 属性之前分配 onload 事件处理程序,如下所示
window.addEventListener('load' () => {
let logo = document.createElement('img');
// assign and onload event handler
logo.addEventListener('load', (event) => {
console.log('The logo has been loaded');
});
// add logo to the document
document.body.appendChild(logo);
logo.src = 'logo.png';
});
Code language: JavaScript (javascript)工作原理
- 首先,在文档完全加载后,通过将代码放置在窗口的 load 事件的事件处理程序中来创建图像元素。
- 其次,将
onload事件处理程序分配给图像。 - 第三,将图像添加到文档中。
- 最后,将图像 URL 分配给
src属性。一设置src属性,图像就会下载到元素中。
脚本的 load 事件
<script> 元素也支持 load 事件,与标准方式略有不同。脚本的 load 事件允许您检查 JavaScript 文件是否已完全加载。
与图像不同,Web 浏览器仅在分配了 src 属性并将 <script> 元素添加到文档中后才开始下载 JavaScript 文件。
以下代码在页面完全加载后加载 app.js 文件。它分配了一个 onload 事件处理程序来检查 app.js 是否已完全加载。
window.addEventListener('load', checkJSLoaded)
function checkJSLoaded() {
// create the script element
let script = document.createElement('script');
// assign an onload event handler
script.addEventListener('load', (event) => {
console.log('app.js file has been loaded');
});
// load the script file
script.src = 'app.js';
document.body.appendChild(script);
}Code language: JavaScript (javascript)摘要
load事件在文档完全加载后发生,包括依赖资源,如 JavaScript 文件、CSS 文件和图像。<img>和<script>元素也支持load事件。- 使用
addEventListener()方法注册onload事件处理程序。
本教程对您有帮助吗?