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日

相关文章

  • miller_rabin

    Miller-Rabin算法 Miller-Rabin算法是一种用于判断一个数是否为质数的算法。它是基于费马小定理和二次探测定理的,可以在多项式时间内完成判断。本文将提供一个完整攻略,介绍Miller-Rabin算法的原理和现方法,并提供两个示例说明。 原理 Miller-Rabin算法的原理基于费马小定理和二次探测定理。费马小定理指出,如果p是一个质数,a…

    other 2023年5月8日
    00
  • Win10通用版QQ 5.0.6.0901正式版下载

    Win10通用版QQ 5.0.6.0901正式版下载攻略 QQ是一款广泛使用的即时通讯软件,Win10通用版QQ 5.0.6.0901正式版是其最新版本。以下是下载和安装该版本QQ的详细攻略。 步骤一:访问官方网站 首先,你需要访问QQ的官方网站以获取最新版本的下载链接。你可以在浏览器中输入“QQ官方网站”进行搜索,然后点击官方网站的链接。 步骤二:导航到下…

    other 2023年8月3日
    00
  • CEF C++调用前端js方法展示传递过来的图片数据

    CEF C++调用前端js方法展示传递过来的图片数据 当我们需要在一个桌面应用程序中展示动态的图片数据时,通常情况下我们可以使用网络图片,但是如果需要展示本地的图片呢?这时候,我们可以使用 CEF (Chromium Embedded Framework) 以及前端的 JavaScript 技术来实现这一需求。 CEF 简介 CEF 是一个基于 Chromi…

    其他 2023年3月28日
    00
  • linux(centos)安装minio 详细教程 附防火墙端口开放操作

    Linux(CentOS)安装Minio 详细教程 附防火墙端口开放操作 Minio是一个开源的对象存储服务器,兼容 Amazon S3 API。它可以在Linux、Mac OS X和Windows等多个平台上运行。本文将介绍在Linux(CentOS)中安装Minio的详细步骤,并且提供相应的防火墙端口开放操作说明。 安装Minio 步骤1:下载Minio…

    其他 2023年3月28日
    00
  • python中的tcp示例详解

    Python中的TCP示例详解 在Python中,使用TCP/IP协议进行网络通信非常常见。本篇文章将结合两个简单的例子,详细讲解Python中如何使用TCP协议进行通信。 示例一:客户端与服务端的基本交互 首先,我们需要了解socket模块。在Python中,socket模块提供了构建网络应用程序所需的基础设施。具体可以通过以下代码引入socket模块: …

    other 2023年6月27日
    00
  • 各类文件怎么打开及文件类型详解

    各类文件怎么打开及文件类型详解攻略 本攻略将为您详细讲解各类文件的打开方式以及文件类型的详细解释。以下是各类文件的打开方式和文件类型的详细说明: 文本文件 (.txt, .docx, .pdf) 文本文件是一种包含纯文本内容的文件。以下是打开不同类型的文本文件的方法: .txt 文件:可以使用任何文本编辑器(如Notepad++、Sublime Text等)…

    other 2023年8月5日
    00
  • arcgis布局视图如何调整大小? arcgis改变布局视图方向以及大小的技巧

    ArcGIS布局视图如何调整大小 在ArcGIS中,可以通过以下步骤来调整布局视图的大小: 打开ArcGIS软件并加载你的布局视图。 在布局视图中,选择“布局”选项卡。 在“布局”选项卡中,点击“页面和打印设置”按钮。 在弹出的对话框中,选择“页面设置”选项卡。 在“页面设置”选项卡中,你可以调整布局视图的大小。你可以选择预设的页面大小,也可以手动输入自定义…

    other 2023年9月5日
    00
  • Vue验证用户名是否可用的方法

    下面是关于“Vue验证用户名是否可用的方法”的完整攻略: 需求 在Vue中验证用户名是否可用,如果当前用户名已经被使用,显示提示信息。 方法 1.在模板中添加校验规则 首先,在模板中添加校验规则,并通过v-model指令绑定数据。比如用input元素来输入用户名,然后使用v-model绑定一个名为username的数据: <template> &…

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