在window.onload与body.onload与document.onready

在前端开发中,我们经常需要在文档加载完成后执行 JavaScript 代码。这时候就有三种常用的事件可以选择:window.onloadbody.onload、和 document.ready(也叫做 DOMContentLoaded)。

window.onload

window.onload 事件会在整个页面及其所有资源(如图片、CSS 文件等)都加载完成后才触发。这意味着如果页面中包含大量资源,那么 window.onload 事件可能会被拖延很长时间。

------------- - ---------- -
  -- --------------
--

body.onload

body.onload 事件会在页面主体部分的 HTML 文档加载完成后立即触发,而不是等待所有资源都加载完成。它比 window.onload 更快一些,但仍然需要等待整个 HTML 文档加载完成。

----- ----------------------
-------- ------------ -
  -- ------------------
-

document.ready

document.ready 事件仅在 HTML 文档加载完成并解析完毕后即可触发,而不必等待所有资源都加载完成。这使得它比前两者更快,并且可以在页面上使用 jQuery 等库来方便地操作 DOM 元素。

---------------------------- -
  -- ---- --------------
---

或者使用简写:

------------ -
  -- ---- --------------
---

值得注意的是,document.ready 事件只有在使用 jQuery 等库时才可用。如果你不使用这些库,你可以使用原生 JavaScript 实现。

原生 JavaScript 实现 document.ready 事件:

--------------------------------------------- ---------- -
  -- ---- --------------
---

指导意义

针对这三种常用的页面加载事件,我们应该根据具体情况选择合适的事件来确保代码能够按预期执行。以及需要了解 document.ready 的本质是通过监听 DOMContentLoaded 事件实现,比 window.onload 更快,而且可以使用 jQuery 等库操作 DOM 元素。

如果你使用 jQuery 等库,建议使用 $(document).ready()$(function(){}),因为它们更方便易读,并且兼容性良好。如果你不使用这些库,则应该使用原生 JavaScript 实现 document.ready 事件。

总之,在前端开发中,了解页面加载事件的差异和使用场景是非常重要的。正确地使用它们将有助于提高用户体验和减少不必要的等待时间。

参考示例代码:

--------- -----
------
------
  -----------------------
-------
------

  ---------------

  ------- -----------------------------------------------------------
  --------
    -- -- ------ - ------------------- --
    ---------------------------- -
      ----------------- -----------------
    ---
  ---------

  --------
    -- ---- ---------- -- -------------- --
    --------------------------------------------- ---------- -
      ----------------- -----------------
    ---
  ---------

-------
-------

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/12260


猜你喜欢

  • 使用JSON.stringify将div以漂亮的格式输出

    在前端开发中,我们经常需要将JavaScript对象转换为字符串,并将其展示在页面上。而JSON.stringify()是一个非常有用的函数,可以将JavaScript对象转换为JSON格式的字符串。

    7 年前
  • 变量的大写首字母

    在前端开发中,变量名的命名规范是非常重要的。其中一个常见的规范是使用大写字母作为变量的首字母。这种命名方式被称为大驼峰命名法(Pascal Case),它能够使变量名更加清晰易懂,提高代码可读性和可维...

    7 年前
  • 如何在多个列上排序数组?

    在前端开发的应用程序中,经常需要对数据进行排序。有时,仅按照一个列进行排序并不足够,需要在多个列上进行排序。本文将介绍如何使用 JavaScript 在多个列上排序数组。

    7 年前
  • 基于键值查找和删除数组中的对象

    在前端开发中,我们经常需要操作对象数组。其中,对于特定键值的查找和删除是常见的需求。本文将介绍如何使用 JavaScript 实现基于键值查找和删除对象数组的方法。

    7 年前
  • 如何让一个更新的面板回发后执行JavaScript回调?

    在前端开发中,我们经常需要使用各种组件和插件来实现页面交互。其中一个常见的需求是当一个面板或者组件被更新后,需要执行一些后续处理,比如重新绑定事件、更新数据等等。在本文中,我们将介绍如何通过回调函数来...

    7 年前
  • 惊讶于JavaScript中的全局变量有未定义的值

    在JavaScript开发中,我们经常会使用全局变量。 然而,在某些情况下,我们可能会惊讶地发现全局变量的值是未定义的。这是因为在JavaScript中,如果没有明确声明变量,则其默认为全局变量。

    7 年前
  • 使用OnChange事件监听输入框内容变化

    当用户在前端页面中的输入框中输入文本时,我们通常需要实时响应这些文本变化,并执行一些相关操作。这时候,我们可以使用 OnChange 事件来监听输入框的内容变化。 如何使用OnChange事件 我们可...

    7 年前
  • HTML5的canvas ctx.filltext不会;不换行吗?

    HTML5中,Canvas是一个非常强大的工具,提供了丰富的API来绘制图形和文本等。其中,ctx.filltext()是用于在Canvas上绘制文本的方法。但是,有时候我们可能会遇到一个问题:当绘制...

    7 年前
  • 可以在 JavaScript 中复制 HTML 元素对象吗?

    在前端开发中,我们经常需要操作网页上的 HTML 元素。有时候我们会想要复制一个 HTML 元素对象,然后进行一些改变,而不影响原来的元素。那么,在 JavaScript 中,我们可以实现这个功能吗?...

    7 年前
  • 如何创建一个新的jQuery img标签,从JavaScript对象SRC和身份?

    在前端开发中,我们经常需要动态地添加或者修改页面上的元素。其中,图片是一个非常重要的元素。如果你使用 jQuery 进行开发,那么创建一个新的 img 标签并设置其 src 属性可以像下面这样实现: ...

    7 年前
  • 什么是“切入点”在 NPM init

    当我们使用 NPM 进行项目初始化时,会看到一个名为 "entry point" 或 "切入点" 的选项。这个选项用来告诉 NPM 如何找到你的应用程序或库的主要入口文件。

    7 年前
  • 反应:当使用基于类的成分与功能组件?

    在 React 中,我们可以使用函数式组件和基于类的组件来构建 UI。尽管函数式组件已经越来越受欢迎,但是基于类的组件仍然是 React 中的一个重要概念。 基于类的组件介绍 基于类的组件是一个 Ja...

    7 年前
  • 何时执行$(文档)就绪回调?

    在前端开发中,我们通常需要在页面加载完成后才能进行一些操作,例如改变元素的样式、添加事件监听器等。为了实现这个目的,我们可以使用文档就绪事件(document ready event),该事件会在文档...

    7 年前
  • 我应该使用 `document.createDocumentFragment()` 还是 `document.createElement()`?

    在前端开发中,我们通常需要通过 JavaScript 动态地创建 DOM 元素。当我们需要为文档添加多个子元素时,我们可以使用 document.createDocumentFragment() 或 ...

    7 年前
  • 如何跨域使用 window.postMessage?

    在前端开发中,我们经常需要与其他域名下的页面进行通信。然而,由于浏览器的同源策略(Same-Origin Policy),JavaScript 脚本只能访问与当前页面同源的资源,无法跨域访问其他页面。

    7 年前
  • 更改浏览器缩放级别

    什么是浏览器缩放级别 浏览器缩放级别是指页面在浏览器中显示的大小比例,通常以百分比表示。默认情况下,浏览器的缩放级别为100%,也就是页面按照原始大小显示。 为什么要更改浏览器缩放级别 更改浏览器缩放...

    7 年前
  • JavaScript 放在头部和关闭前的优缺点

    在网页中,我们通常会将 JavaScript 代码放在 <head> 或页面底部的 <body> 结束标签之前。这两种方式各有优缺点。 放在头部的优点 加载速度更快:将 Ja...

    7 年前
  • 匿名函数的使用会影响性能吗?

    在前端开发中,我们常常会用到匿名函数。匿名函数是一种没有名称的函数,在 JavaScript 中使用非常广泛。然而,有些人认为使用匿名函数会影响性能,这是否正确呢?本文将深入探讨匿名函数的使用对性能的...

    7 年前
  • 用Chai在异步Mocha测试中工作的方法

    背景 Mocha是Node.js中最常用的测试框架之一,而Chai则是一个流行的断言库,可以方便地检查应用程序的输出。然而,在使用异步测试时,很容易遇到各种问题,例如测试未能在完成异步操作之前结束。

    7 年前
  • 在JavaScript中将数组解构为不同的变量

    JavaScript是一种强大的编程语言,它提供了许多有用的功能来简化开发过程。其中之一就是数组解构,这个功能可以帮助我们将一个数组中的值分配给不同的变量。 什么是数组解构 数组解构是一种从数组中提取...

    7 年前

相关推荐

    暂无文章