【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 函数都可以在页面加载完成后执行代码,但它们在触发时机、性能和用法上有所区别。在实际开发中,根据具体需求选择合适的方法来确保代码的正确执行。

相关文章
|
1月前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
28天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
36 6
|
1月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-函数的参数
关于JavaScript函数参数基础知识的介绍。
37 4
JavaScript基础知识-函数的参数
|
3月前
|
JavaScript 前端开发
JavaScript 函数参数
JavaScript 函数参数
37 3
|
5月前
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
61 1
|
6月前
|
JavaScript
js -- 函数总结篇,函数提升、动态参数、剩余参数、箭头函数、this指向......
js -- 函数总结篇,函数提升、动态参数、剩余参数、箭头函数、this指向......
|
7月前
|
JavaScript 前端开发
【专栏】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表
【4月更文挑战第29天】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表。它接受两个参数:上下文对象和参数数组。理解`apply`有助于深入JS运行机制。文章分三部分探讨其原理:基本概念和用法、工作原理详解、实际应用与注意事项。在应用中要注意性能、参数类型和兼容性问题。`apply`可用于动态改变上下文、传递参数数组,甚至模拟其他语言的调用方式。通过深入理解`apply`,能提升代码质量和效率。
45 3
|
7月前
|
JavaScript 前端开发 Java
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
61 0
|
7月前
|
存储 JavaScript 前端开发
每日一道javascript面试题(九)函数的参数可以和函数体中的变量重名吗
每日一道javascript面试题(九)函数的参数可以和函数体中的变量重名吗