JavaScript 中 document load 和 DOMContentLoaded 事件之间的区别

javascriptweb developmentfront end technology

要验证网页是否已完全加载,请使用 DOMContentLoaded 和 load 事件。但是,有些因素会影响人们选择其中一种。让我们看看它们两者,看看它们是如何运作的。

当触发 DOMContentLoaded 事件时,基本 HTML 页面已加载,其解析已完成。样式表、子框架和其他附加组件(如照片和图片)不会因此事件而延迟,直到它们完成加载。

当页面完全加载时,应调用另一个名为 load 的事件。当 DOMContentLoaded 更合适时,通常习惯使用 load。

DOM 解析由同步 JavaScript 暂停。如果您希望在用户请求页面后尽快解析 DOM,则可以将 JavaScript 设为异步,并优化样式表加载。加载的样式表通常会从主要 HTML 内容中"窃取"流量,并减慢 DOM 解析速度,因为它们是同时加载的。

语法

document.addEventListener("DOMContentLoaded", function(e) {
    console.log("GfG 页面已加载");
});

示例

在此示例中,让我们了解指示网页 DOM 加载完成的消息。它在控制台日志窗口中可见,如下所示。

<!DOCTYPE html>
<html>
<title>Difference between document load and DOMContentLoaded events in JavaScript - TutorialsPoint
</title>
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <script type="text/javascript">
      document.addEventListener("DOMContentLoaded", function(e) {
         console.log("TutorialsPoint page has loaded for you");
      });
   </script>
</head>
<body style="text-align: center">
   <h3>Join one of the world’s largest online learning marketplaces.</h3>
   <br>
   <img src="https://www.tutorialspoint.com/images/logo.png">
</body>
</html>


使用 DOMContentLoaded 事件的好处包括

  • 当消息或内容显示得更快时,用户体验会得到增强。

  • 页面加载所需的时间更少。

文档加载 - 加载事件使用不同的执行方法。当网页的所有元素(包括 DOM 层次结构和相关功能,如 CSS 和 JavaScript 文件、图像和照片以及外部链接)都已加载时,此事件完成。因此,加载事件本质上有助于确定页面是否已完全加载。

语法

document.addEventListener("DOMContentLoaded", function(e) {
   console.log("GfG page has loaded");
});

示例

load 事件是在整个网页(HTML)完全加载后为 window 对象触发的,包括所有补充资源,如 JavaScript、CSS 和图片。您可以使用 addEventListener() 函数创建一个事件侦听器来处理 load 事件。

从历史上看,我们使用 load 事件在文档加载后执行脚本。但是,还有其他情况可能更合适。

DOMContentLoaded 和 load 是两个主要事件。根据 JavaScript.info,前者是在浏览器加载了所有外部资源(包括图像和样式表)但尚未构建 DOM 树时触发的,而后者是在加载了所有外部资源(包括图像和样式表)时触发的。

<!DOCTYPE html>
<html>
<title>Difference between document load and DOMContentLoaded events in JavaScript - TutorialsPoint
</title>
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <script type="text/javascript">
      document.addEventListener("load", function(e) {
         console.log("TutorialsPoint page has loaded completely for you");
      });
   </script>
</head>
<body style="text-align: center">
   <h3>Enroll now in the most popular and best rated courses at TutorialsPoint.</h3>
   <br>
   <img src="https://www.tutorialspoint.com/images/logo.png">
</body>
</html>


使用 load 事件的好处

  • 此事件有助于确定网页中每个元素的加载时间。

示例

浏览器窗口由 window 对象表示。元素加载完成后,onload 属性处理 load 事件。它与 window 元素一起使用,在网页加载过程完成后运行脚本。此属性的处理程序函数设置为需要运行的函数。网页加载完成后,将立即执行该函数。

语法

window.onload = function exampleFunction() {
   // 要执行的函数
}

示例

<!DOCTYPE html>
<html>
<title>Difference between document load and DOMContentLoaded events in JavaScript - TutorialsPoint
</title>
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body style="text-align:center">
   <h2 style="color: rgb(6, 94, 119)">
      Learn JavaScript with TutorialsPoint! </h2>
   <strong>
      In javascrip, how do I start a function when the page loads?
   </strong>
   <p>
      The script has been already executed up. For the output, look at the console.
   </p>
   <script>
      window.onload = function exampleFunction() {
         console.log('Now, your script will load.');
      }
   </script>
</body>
</html>



相关文章