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日

相关文章

  • 为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题

    为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题,可以通过以下步骤实现: 在路由配置中使用Webpack提供的代码分割功能,将各个路由对应的组件打包为单独的js文件,实现懒加载。具体代码示例: const Foo = () => import(‘./Foo.vue’) const Bar = () => impo…

    other 2023年6月25日
    00
  • win10 Build 10000编译完成 版本号突破10000

    Win10 Build 10000编译完成 版本号突破10000攻略 简介 Win10 Build 10000是Windows 10操作系统的一个开发版本,版本号突破10000代表了一次重要的里程碑。本攻略将详细介绍如何完成Win10 Build 10000的编译,并使版本号突破10000。 步骤 步骤一:准备开发环境 在开始编译之前,确保你已经准备好了以下…

    other 2023年8月3日
    00
  • ue4做ar的思路路线

    以下是UE4做AR的思路路线的完整攻略,包括两个示例说明。 1. UE4做AR的思路路线 要在UE4中制作AR应用程序,可以按照以下步骤进行: 安装AR插件:在UE4中安装AR插件,例如ARKit或ARCore插件,以便在UE4中使用AR功能。 导入3D模型:将3D模型导入UE4中,例如使用3ds Max或Maya等软件制作3D模型,并将其导入UE4中。 创…

    other 2023年5月9日
    00
  • idea快速搭建spring cloud注册中心与注册的方法

    以下是使用IDEA快速搭建Spring Cloud注册中心与注册的方法的完整攻略: IDEA快速搭建Spring Cloud注册中心与注册的方法 创建一个新的Spring Boot项目:在IDEA中,选择“File” -> “New” -> “Project”,然后选择“Spring Initializr”作为项目模板。按照向导填写项目信息,包括…

    other 2023年10月14日
    00
  • surfaceview使用详解

    SurfaceView 使用详解 SurfaceView 是 Android 中一个很实用的UI控件,它可以让我们在一个单独的线程中绘制复杂的图形,例如视频、动画等等。这里就来详细介绍一下 SurfaceView 的使用。 SurfaceView 的基本用法 首先,需要在 xml 文件中定义一个 SurfaceView 控件: <android.vie…

    其他 2023年3月28日
    00
  • StatusStrip控件

    StatusStrip控件是Windows Forms中的一个控件,用于在窗体底部显示状态信息。本文将提供一个完整的攻略,包括StatusStrip控件的基本用法、常用属性和方法、以及两个示例说明。 基本用法 使用StatusStrip控件时,需要将其添加到窗体中,并添加一个或多个ToolStripStatusLabel控件作为状态信息的显示区域。可以通过T…

    other 2023年5月5日
    00
  • 漫步ASP.NET MVC的处理管线

    ASP.NET MVC是一种基于模型-视图-控制器(MVC)模式的Web应用程序框架。在ASP.NET MVC中,请求的处理流程被称为处理管线。以下是漫步ASP.NET MVC处理管线的完整攻略,包括以下内容: 处理管线的基本知识 处理管线的阶段 示例说明 处理管线的基本知识 在ASP.NET MVC中,请求的处理流程被称为处理管线。处理管线由一系列阶段组成…

    other 2023年5月6日
    00
  • shell判断一个变量是否为空方法总结

    下面是关于“shell判断一个变量是否为空方法总结”的完整攻略: 概述 在shell脚本编程中,判断变量是否为空是一项基础的操作。在实际编程中,有多种方法可以判断一个变量是否为空,本文将总结常见的方法及其使用说明。 方法一:使用if语句 使用if语句判断变量是否为空,需要注意的是if语句中的条件判断符号不能少。 示例1:判断变量是否为空 #!/bin/bas…

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