jquery是如何实现$(document).ready()的?

2024-05-01

jquery是如何实现的$(document).ready()?

当然我可以阅读代码,但我正在寻找这个概念......


概念:jQuery.ready http://api.jquery.com/ready/

虽然 JavaScript 提供了在渲染页面时执行代码的 load 事件,但只有在完全接收到所有资源(例如图像)后,才会触发该事件。在大多数情况下,一旦 DOM 层次结构完全构建完毕,脚本就可以运行。传递给 .ready() 的处理程序保证在 DOM 准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他 jQuery 代码的最佳位置。当使用依赖 CSS 样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素非常重要。

它根据浏览器实现它(例如,IE是不同的),但在一些特殊情况下,例如调用它时afterDOM 已加载。 (我不知道如何回答这个问题without查看源代码)。

jQuery.ready 的核心 http://code.jquery.com/jquery-1.5.1.js(设置事件绑定的是):

bindReady: function() {

仅绑定一次。

    if ( readyBound ) {
        return;
    }
    readyBound = true;

确保处理调用 Ready 的情况after“DOM 加载”。

    // Catch cases where $(document).ready() is called after the
    // browser event has already occurred.
    if ( document.readyState === "complete" ) {
        // Handle it asynchronously to allow scripts the opportunity to delay ready
        return setTimeout( jQuery.ready, 1 );
    }

W3C 标准事件模型。

    // Mozilla, Opera and webkit nightlies currently support this event
    if ( document.addEventListener ) {
        // Use the handy event callback
        document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );

老派的后备。

        // A fallback to window.onload, that will always work
        window.addEventListener( "load", jQuery.ready, false );

IE 事件模型(Opera 也可能使用此模型)。

    // If IE event model is used
    } else if ( document.attachEvent ) {
        // ensure firing before onload,
        // maybe late but safe also for iframes
        document.attachEvent("onreadystatechange", DOMContentLoaded);

老派的后备。

        // A fallback to window.onload, that will always work
        window.attachEvent( "onload", jQuery.ready );

更多行为使其在不同环境下与 IE 保持一致。请注意,事件绑定用于“onreadystatechange”

        // If IE and not a frame
        // continually check to see if the document is ready
        var toplevel = false;

        try {
            toplevel = window.frameElement == null;
        } catch(e) {}

        if ( document.documentElement.doScroll && toplevel ) {
            doScrollCheck();
        }
    }
},

doScrollCheck在 IE 中设置一个“轮询”,仅当成功条件成功时才会调用处理程序。有关详细信息,请参阅源代码(它使用 IE 的一个特性)。

快乐编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery是如何实现$(document).ready()的? 的相关文章

随机推荐

  • QML 适合所有分辨率的屏幕

    大家好 我的 QML 代码有问题 我犯了一个错误 我给元素设置了一定的大小 现在我在将应用程序放在其他设备上时遇到了问题 我会将我的代码粘贴到有宽度和高度的位置 以便您可以更改它以向我展示如何使用动态调整大小 我需要说我正在使用以下代码从
  • numpy float:算术运算比内置函数慢 10 倍?

    我对以下代码的计时非常奇怪 import numpy as np s 0 for i in range 10000000 s np float64 1 replace with np float32 and built in float 内
  • 如何从注册表获取重定向字符串?

    我正在使用从注册表中读取一些值Registry http msdn microsoft com en us library microsoft win32 registry 28v vs 110 29 aspx 我需要访问使用的一些值注册表
  • angularjs ng-grid:行之间的父子关系(隐藏/显示行)

    我正在尝试使用预定义的隐藏行来实现渲染 ng grid 并在某些特定事件上我想显示它们 我试图模拟行之间的父子关系 但所有行都将以通常的方式呈现和放置 默认情况下 子 行将呈现为 折叠 单击父项时 子行将显示为展开的 我正在尝试寻找一些解决
  • 无需通过电子邮件发送密码即可恢复密码

    所以 我一直在玩asp PasswordRecovery发现我真的不喜欢它 原因有几个 1 即使无法访问 Alice 的电子邮件 也可以重置 Alice 的密码 密码重置的安全问题缓解了这个问题 但并不能真正令我满意 2 Alice 的新密
  • 是否有任何 mongodb ORM 允许您为字段添加别名?

    我刚刚看了这个 http blog mongodb org post 38467892360 mongodb schema design insights and tradeoffs from http blog mongodb org p
  • 具有多个路径的 SVG 剪辑路径的悬停事件

    我有一个 SVG 演示图像 其中包含多个正在剪辑动画 GIF 的圆圈 当用户将鼠标悬停在每个圆圈上时 是否可以观察每个圆圈的悬停事件 例如左上角的圆圈或右中角的圆圈 另外 当这些圆圈悬停时 是否可以操纵这些圆圈上的颜色叠加 EDIT 理想情
  • Xcode 8:因特性而异,改变所有尺寸类别的布局

    我正在尝试使用 xcode 8 2 1 上的 very for Traits 功能 但是当我使用 Vary for Traits 更改一个尺寸类的布局 然后在完成后 完成变化 时 它实际上正在更改每个尺寸的布局我的故事板中的课程 例如我尝试
  • Logstash删除类型并保留_type

    我有一个logstash 客户端和服务器 客户端将带有logstash的udp输出的日志文件发送到服务器 服务器也运行logstash来获取这些日志 在服务器上 我有一个 json 过滤器 它会在实际日志的字段中提取 json 格式的消息
  • 如何使用 maven 在 JBoss AS 7 的 MANIFEST.MF 中生成模块依赖关系?

    在 JBoss AS 7 中 依赖于 AS 中包含的库的 Web 应用程序必须在 META INF MANIFEST MF 中声明这些依赖关系 如下所示 Dependencies
  • XCode 7 中的 UI 测试文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道 WWDC 2015 上引入的 XCode 7 中的新 UI 测试是否有任何文档 如果没有文档
  • Spring JTA 事务与 Websphere 的 JPA 和 jndi 数据源

    我有多个数据源和一个配置有 JPA 的数据库 我正在使用 websphere 7 我希望将所有这些数据源配置为全局事务 我正在使用下面的 spring 配置 但事务没有按预期的全局事务工作 如果一个数据库发生故障 则另一个数据库将被提交 这
  • 窗口依赖注入

    我想在 WPF 应用程序中使用 Unity 依赖注入 我的窗口抛出 System Windows Markup XamlParseException 对于 MainWindow 类型 没有找到默认构造函数 这是我的代码 应用程序 xaml
  • Excel 工作表到 Numpy 数组

    我正在尝试做一件令人难以置信的简单事情 将 Excel 工作表的部分内容加载到 Numpy 数组中 我发现了一个有用的拼凑 但它令人尴尬地不Pythonic 假设我的工作表被加载为 ws 代码 A np zeros 37 3 for i i
  • 如何在 PL/SQL 中将列添加到现有表之前检查列是否存在?

    在向 Oracle 数据库的表中添加列之前 如何添加简单的检查 我已经包含了用于添加列的 SQL ALTER TABLE db tablename ADD columnname NVARCHAR2 30 可以使用以下视图之一访问有关 Ora
  • NativeScript中有本地存储吗?

    如何保持 NativeScript 应用程序中的数据持久化 谁能告诉一下localStorage in NativeScript 编辑 正在寻找localStorage当时 您的问题可以通过多种方式来解读 这使得给您一个好的答案有点困难 但
  • Scheme/Lisp 嵌套循环和递归

    我正在尝试解决方案中的一个问题 该问题要求我使用嵌套循环或嵌套递归 例如我有两个列表 我必须检查它们的笛卡尔积的条件 解决这些类型问题的最佳方法是什么 有关如何简化这些类型的函数的任何指示吗 I ll elaborate a bit sin
  • C# 中类实例的内存使用情况[重复]

    这个问题在这里已经有答案了 可能的重复 C NET 对象使用多少内存 https stackoverflow com questions 426396 how much memory does a c net object use 就像标题
  • 将文件读入 Perl 中的变量 [重复]

    这个问题在这里已经有答案了 可能的重复 在 Perl 中将文件转换为字符串的最佳方法是什么 https stackoverflow com questions 206661 what is the best way to slurp a f
  • jquery是如何实现$(document).ready()的?

    jquery是如何实现的 document ready 当然我可以阅读代码 但我正在寻找这个概念 概念 jQuery ready http api jquery com ready 虽然 JavaScript 提供了在渲染页面时执行代码的