当前位置: 首页 > news >正文

深入理解 Document Load 和 Document Ready 的区别

目录

前言:

一、Document Ready

二、Document Load

三、理解和总结


前言:

在前端开发中,理解页面加载的不同阶段是至关重要的。特别是当我们需要在页面加载到特定阶段时执行某些操作时,我们需要知道应该使用 document ready 还是 document load 事件。这两个事件在页面加载过程中发生的时间点不同,它们提供了在不同时间点运行代码的能力。本文将深入探讨 document readydocument load 的区别,以及如何在实际开发中正确使用它们。

一、Document Ready

  1. 用法: document ready 事件在 DOM(文档对象模型)完全加载和解析完成后触发,但在所有外部资源(如图片和样式表)加载完成之前触发。这意味着你可以在这个时间点安全地操作 DOM,但如果你需要计算或操作依赖于外部资源的元素的尺寸或位置,你可能需要等到所有资源都加载完成。

在 jQuery 中,document ready 事件可以这样使用:

$(document).ready(function() {
  // 你的代码
});

或者更简洁的写法:

$(function() {
  // 你的代码
});
  1. 代码:
<!DOCTYPE html>
<html lang="en">
<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">
  <title>Document Ready Example</title>
  <style>
    img {
      width: 100%;
      height: auto;
    }
  </style>
</head>
<body>
  <h1>Hello, World!</h1>
  <img src="large-image.jpg" alt="Large Image">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(function() {
      alert('DOM is ready!');
      const imgHeight = $('img').height();
      console.log('Image height on document ready:', imgHeight); // 可能为 0
    });
  </script>
</body>
</html>

当 DOM 准备好时,会弹出一个警告框,并在控制台打印出图片的高度。由于这个时候图片可能还没有完全加载,所以打印出的图片高度可能为 0。

二、Document Load

  1. 用法: document load 事件在整个页面及所有依赖的资源(如图片、样式表、脚本等)完全加载完成后触发。这个时间点适合执行需要计算或操作依赖于外部资源的元素的尺寸或位置的代码。

在 jQuery 中,document load 事件可以这样使用:

$(window).on('load', function() {
  // 你的代码
});

  1. 代码:
<!DOCTYPE html>
<html lang="en">
<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">
  <title>Document Load Example</title>
  <style>
    img {
      width: 100%;
      height: auto;
    }
  </style>
</head>
<body>
  <h1>Hello, World!</h1>
  <img src="large-image.jpg" alt="Large Image">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(window).on('load', function() {
      alert('Page is fully loaded!');
      const imgHeight = $('img').height();
      console.log('Image height on document load:', imgHeight); // 应该是正确的高度
    });
  </script>
</body>
</html>

当整个页面及所有依赖的资源完全加载完成时,会弹出一个警告框,并在控制台打印出图片的高度。这个时候,图片已经完全加载,所以打印出的高度应该是正确的。

三、理解和总结

document readydocument load 事件提供了在页面加载的不同阶段运行代码的能力。document ready 更适合用于操作 DOM 元素,而 document load 更适合用于执行依赖于外部资源的操作。

在实际开发中,选择使用 document ready 还是 document load 取决于你的具体需求。如果你的操作不依赖于外部资源,或者你希望尽快执行代码以提升用户体验,你应该使用 document ready。如果你的操作依赖于外部资源,你应该使用 document load 以确保所有资源都加载完成。

理解这两个事件的区别和适用场景,可以帮助你编写更高效、更可靠的代码,并提升最终用户的体验。

相关文章:

  • 深度学习:激活函数曲线总结
  • 关于多个elementui的cascader级联组件页面滚动渲染样式导致卡顿问题
  • 【机器学习可解释性】2.特征重要性排列
  • Node.js中的单线程服务器
  • nodejs+vue购物网站设计系统-计算机毕业设计
  • SolidWorks2020安装教程(超详细图文教程)
  • Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘
  • 【ARM 嵌入式 C 入门及渐进 10 -- 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 比较介绍】
  • 【设计模式】第5节:创建型模式之“简单工厂、工厂方法和抽象工厂模式”
  • vue重修之Vuex【下部】
  • P-MOS管开关机控制电路(手动按键控制和自动采样信号触发控制)
  • 蓝桥杯每日一题2023.10.22
  • Python基础学习004——for循环与字符串
  • 【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】
  • Java 通过反射修改字符串 String 类型变量的取值而不改变字符串变量的指向
  • 【方法】如何给PDF文件添加“打开密码”?
  • 最近面试遇到的高频面试题
  • [数据分析与可视化] 基于Python绘制简单动图
  • C语言--程序环境和预处理(宏)
  • 做过哪些外设驱动?
  • 俄宣布停火三天,外交部:希望各方继续通过对话谈判解决危机
  • 财政部农业农村司司长吴奇修接受纪律审查和监察调查
  • 广州海关原党委委员、副关长刘小威被开除党籍
  • 全过程人民民主研究基地揭牌,为推动我国民主政治建设贡献上海智慧
  • 人民日报头版:上海纵深推进浦东高水平改革开放
  • 《九龙城寨之围城》斩获香港金像奖九项大奖,包括最佳影片