jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较

为了在页面加载时添加加载中效果,我们可以使用jQuery Mobile提供的"loading"插件。该插件会在页面上显示一个加载中的图标动画,直到页面的所有资源(包括外部CSS和JavaScript文件)加载完成,然后再隐藏加载中的图标。在使用该插件时,需要注意jQuery Mobile的生命周期事件顺序。

jQuery Mobile的生命周期事件顺序是:

  1. mobileinit: 页面加载前,可以通过该事件来自定义jQuery Mobile的配置选项。
  2. pagebeforecreate: 用于在页面 DOM 创建之前初始化一些组件并进行操作。
  3. pagecreate: 页面 DOM 创建完成后,可以在该事件中添加UI组件和绑定事件等操作。
  4. pageinit: 页面组件都已经创建并初始化完毕后,该事件会被触发,可以在该事件中进行页面初始化操作。
  5. pageload: 该事件已经从jQuery Mobile中移除,不再使用。
  6. pagebeforehide: 当页面将要从DOM中移除之前,可以在该事件中进行一些操作和清理工作。
  7. pageremove: 当页面已经从DOM中移除后,可以在该事件中进行一些操作和清理工作。

在使用"loading"插件时,我们需要在页面DOM创建之前显示加载中的图标,直到所有资源加载完成后再隐藏它。因此,我们需要在pagebeforecreate事件中添加显示加载中图标的代码,在pageload事件中添加隐藏加载中图标的代码。但JQuery Mobile 1.4以后不再支持pageload事件了,需要改用pageshow事件。可以使用以下示例代码来实现该功能:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery Mobile加载中效果</title>
  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  <script>
  $(document).on("pagebeforecreate", function () {
    $.mobile.loading("show"); //显示加载中图标
  }).on("pageshow", function () {
    $.mobile.loading("hide"); //隐藏加载中图标
  });
  </script>
</head>
<body>
  <div data-role="page">
    <div data-role="header">
      <h1>jQuery Mobile加载中效果</h1>
    </div>
    <div data-role="content">
      <!-- 页面内容 -->
    </div>
    <div data-role="footer" data-position="fixed">
      <h4>版权所有 &copy; 2021</h4>
    </div>
  </div>
</body>
</html>

在上面的示例代码中,我们在pagebeforecreate事件中调用$.mobile.loading("show")方法显示加载中的图标,在pageshow事件中调用$.mobile.loading("hide")方法隐藏加载中的图标。在示例代码中,我们使用了"fixed"属性将底部版权信息固定在底部。

除了在pagebeforecreatepageshow事件中使用"loading"插件外,还可以在$(document).ready()window.onload事件中使用它。但是,它们的执行顺序是不同的。

$(document).ready()事件表示文档的DOM(文档对象模型)已经加载完成,但是页面上的所有资源(包括外部CSS和JavaScript文件)还未加载完成。因此,如果在$(document).ready()事件中使用"loading"插件,只有文档的DOM加载完成后,在加载其他资源时才会显示加载中的图标。示例如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery Mobile加载中效果</title>
  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  <script>
  $(document).ready(function () {
    $.mobile.loading("show"); //显示加载中图标
  });
  </script>
</head>
<body>
  <div data-role="page">
    <div data-role="header">
      <h1>jQuery Mobile加载中效果</h1>
    </div>
    <div data-role="content">
      <!-- 页面内容 -->
    </div>
    <div data-role="footer" data-position="fixed">
      <h4>版权所有 &copy; 2021</h4>
    </div>
  </div>
</body>
</html>

另一方面,window.onload事件表示页面上的所有资源都已经加载完成,包括外部CSS和JavaScript文件,但是和$(document).ready()事件不同,它会等待所有页面资源都加载完成才会执行。因此,在window.onload事件中使用"loading"插件可以保证所有资源都加载完成后才显示加载中的图标。示例如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery Mobile加载中效果</title>
  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  <script>
  window.onload = function () {
    $.mobile.loading("show"); //显示加载中图标
  }
  </script>
</head>
<body>
  <div data-role="page">
    <div data-role="header">
      <h1>jQuery Mobile加载中效果</h1>
    </div>
    <div data-role="content">
      <!-- 页面内容 -->
    </div>
    <div data-role="footer" data-position="fixed">
      <h4>版权所有 &copy; 2021</h4>
    </div>
  </div>
</body>
</html>

可以看到,$(document).ready()会比window.onload事件更早执行,而且只会在DOM加载完成后执行。因此,如果使用$(document).ready()事件来显示"loading"插件,可能会出现显示不完整的问题。所以,在使用"loading"插件显示加载中的图标时,建议在pagebeforecreate事件中使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Android中微信抢红包插件原理解析及开发思路

    很抱歉,由于技术和法律的限制,我无法提供关于破解或修改第三方应用的攻略。我鼓励遵守法律和道德规范,并尊重其他应用的开发者和用户权益。如果您有其他关于Android开发的问题,我将很乐意为您提供帮助。

    other 2023年10月13日
    00
  • 微信小程序 数组(增,删,改,查)等操作实例详解

    微信小程序 数组(增,删,改,查)等操作实例详解 1. 数组的创建和基本操作 1.1 创建一个数组 在 JavaScript 中,可以通过如下方式创建一个数组: let arr = [1, 2, 3]; 这个数组里包含了 1,2,3 三个元素。 1.2 获取数组长度 可以使用 .length 属性获取数组长度,例如: let arr = [1, 2, 3];…

    other 2023年6月25日
    00
  • win7系统电脑运行程序软件出现libeay32.dll丢失的解决方法

    题目:win7系统电脑运行程序软件出现libeay32.dll丢失的解决方法 简介 libeay32.dll是OpenSSL密码库中的一个重要的动态链接库文件,它为软件运作提供必要的支持。如果在运行软件时遇到“libeay32.dll 文件丢失”或“找不到libeay32.dll”等错误提示,那么应该按照下面的方式进行排查和处理。 解决方法 以下是几种解决方…

    other 2023年6月27日
    00
  • 简易ftp工具 六大简易ftp工具总结

    以下是关于“简易ftp工具六大简易ftp工具总结”的完整攻略,包括基本概念、解决方法、示例说明和注意事项。 基本概念 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的协议。简易FTP工具是一种基于FTP协议的文件传输工具,可以帮助用户在不同的计算机之间传输文件。常见的简易FTP工具包括FileZilla、WinSCP、C…

    other 2023年5月7日
    00
  • 基于javascript实现页面加载loading效果

    下面就为你介绍“基于JavaScript实现页面加载loading效果”的完整攻略。 说明 在现代Web应用程序中,页面加载速度很重要,而loading效果可以让用户在等待页面加载时感受到良好的用户体验。本文将详细讲解如何使用JavaScript实现页面加载loading效果,包括两种示例。 基本思路 实现页面加载loading效果,需要以下步骤: 1.在H…

    other 2023年6月25日
    00
  • Win10出现自定义任务栏快捷图标丢失等异常情况怎么解决?

    Win10出现自定义任务栏快捷图标丢失等异常情况的解决攻略 自定义任务栏快捷图标丢失、无法删除、无法打开等异常情况是 Windows 10 操作系统中常见的问题,下面介绍一些可能的解决方法。 方法一:重置任务栏 按下 Ctrl + Shift + Esc 组合键打开任务管理器。 在“进程”选项卡中找到并结束名为 “Windows Explorer” 的进程。…

    other 2023年6月25日
    00
  • smarty循环嵌套用法示例分析

    Smarty循环嵌套用法示例分析 Smarty是一种模板引擎,常用于在PHP应用程序中进行视图渲染。循环嵌套是Smarty中非常常见和有用的功能,它允许我们在模板中嵌套多个循环来处理复杂的数据结构。下面是一个关于Smarty循环嵌套用法示例的详细攻略。 基本语法 在Smarty中,循环嵌套的基本语法如下: {foreach $array1 as $item1…

    other 2023年7月27日
    00
  • Stream、WshShell、WshUrlShortcut对象及Shell.Application的参数与使用

    Stream对象 Stream对象是用于读取和写入数据流的对象。它提供了一系列方法和属性来操作数据流。 示例1:读取文件内容 Set fs = CreateObject(\"Scripting.FileSystemObject\") Set file = fs.OpenTextFile(\"C:\\path\\to\\file.…

    other 2023年10月15日
    00
合作推广
合作推广
分享本页
返回顶部