【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?

简介: 【5月更文挑战第2天】【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?

image.png

JavaScript window.onload 事件 vs jQuery ready 函数

在前端开发中,我们经常需要在页面加载完成后执行一些 JavaScript 操作。JavaScript 原生提供了 window.onload 事件来实现这一目的,而 jQuery 提供了 ready 函数来达到相同的效果。虽然它们都可以在页面加载完成后执行代码,但它们之间有一些重要的区别。本文将对这两者进行详细比较,并提供示例代码帮助读者理解。

1. JavaScript window.onload 事件

window.onload 事件是 JavaScript 原生提供的事件,当整个页面(包括其所有内嵌的资源如图片、样式表、脚本等)加载完成后触发。使用该事件可以确保在所有页面元素都已经加载完成后再执行 JavaScript 代码。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JavaScript window.onload</title>
</head>
<body>

<script>
  window.onload = function() {
    
    
    // 页面完全加载后执行的代码
    console.log('Window loaded');
  };
</script>

</body>
</html>

在上面的示例中,window.onload 事件触发时,控制台会输出 'Window loaded'。

2. jQuery ready 函数

jQuery 提供了一个名为 ready 的函数,用于在 DOM 结构加载完成后执行代码。与 window.onload 不同,ready 函数不需要等待页面上的所有资源加载完成,只需要等待 DOM 结构加载完成即可。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>jQuery ready</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>

<script>
  $(document).ready(function() {
    
    
    // DOM 结构加载完成后执行的代码
    console.log('Document ready');
  });
</script>

</body>
</html>

在上面的示例中,当 DOM 结构加载完成后,控制台会输出 'Document ready'。

3. 区别分析

  • 触发时机

    • window.onload 事件在页面及其所有资源加载完成后触发,包括图片、样式表、脚本等。
    • ready 函数在 DOM 结构加载完成后即可触发,不需要等待页面上的所有资源加载完成。
  • 性能

    • 由于 window.onload 需要等待页面上的所有资源加载完成才触发,因此会导致页面加载速度变慢。
    • ready 函数只需要等待 DOM 结构加载完成即可触发,不会阻塞其他资源的加载,因此性能更好。
  • 用法

    • 使用 window.onload 事件时,只能绑定一个处理函数,多个处理函数需要通过函数内部逻辑实现。
    • 使用 ready 函数时,可以绑定多个处理函数,它们会按照绑定的顺序依次执行。

4. 示例代码

下面是一个同时使用 window.onloadready 的示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JavaScript window.onload vs jQuery ready</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>

<script>
  window.onload = function() {
    
    
    console.log('Window loaded');
  };

  $(document).ready(function() {
    
    
    console.log('Document ready');
  });
</script>

</body>
</html>

在这个示例中,当页面加载完成后,会依次输出 'Window loaded' 和 'Document ready',这说明 window.onloadready 函数都被成功触发了。

5. 总结

虽然 window.onload 事件和 jQuery 的 ready 函数都可以在页面加载完成后执行代码,但它们在触发时机、性能和用法上有所区别。在实际开发中,根据具体需求选择合适的方法来确保代码的正确执行。

相关文章
|
15天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
29 3
|
12天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
15天前
|
前端开发 JavaScript
Bootstrap Web 前端 UI 框架
Bootstrap 是快速开发 Web 应用程序的前端工具包。
30 3
|
16天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
17 3
|
16天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
32 2
|
17天前
|
开发框架 前端开发 JavaScript
Web前端框架
Web前端框架等名词
16 2
|
20天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
19 4
|
17天前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
34 0
|
6月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
48 2
|
4月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
73 1