本文承接上文《使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 方法上》,继续说明 jQuery Mobile 的方法,这部分内容主要与页面 URL 解析相关,除此之外还有其他一些实用方法。

以下两个方法在 jQuery Mobile 1.1 中不赞成使用

八. $.mobile.fixedToolbars.show()

固定工具栏(包括固定的头部栏和尾部栏)可以通过点击屏幕在显示与隐藏之间切换,而这个方法则是手动显示一次工具栏。

它具有一个参数 immediately(boolean, 可选) 。把它设置为 true ,当前激活页面的所有固定工具栏都会立即显示出来。若设置为 false 或者没有指定,则会通过 100ms 的渐变显示出来。注意如 document 的 resize 和 scroll 等事件会导致额外的延时显示。

例子:

// 显示固定工具栏并且显示默认的渐变动画
$.mobile.fixedToolbars.show();// 立即显示固定工具栏
$.mobile.fixedToolbars.show(true);

在 jQuery Mobile 1.1 中,不建议使用该方法,jQuery Mobile 并没有明确原因,但根据 jQuery Mobile 的习惯,这很可能是因为这个方法有很多不稳定性,如上面提到的遇到某些方法会出现额外的延时显示,这对于建立 Web Apps 是很不好的影响因素,它会从底层部分为 Web Apps 带来不可预知的问题。

九. $.mobile.fixedToolbars.hide()

固定工具栏(包括固定的头部栏和尾部栏)可以通过点击屏幕在显示与隐藏之间切换,而这个方法则是手动隐藏一次工具栏。

与 $.mobile.fixedToolbars.show() 相似,它具有一个参数 immediately(boolean, 可选) 。把它设置为 true ,当前激活页面的所有固定的工具栏都会立即隐藏。若设置为 false 或者没有指定,则会通过 100ms 的渐变隐藏起来。注意如 document 的 resize 和 scroll 等事件也会增加隐藏动画的时间。

例子:

// 隐藏固定工具栏并显示默认的渐变动画
$.mobile.fixedToolbars.hide();// 立即隐藏固定工具栏
$.mobile.fixedToolbars.hide(true);

在 jQuery Mobile 1.1 中,也不建议使用该方法。

十. $.mobile.path.parseUrl()

本方法用于解析一个 URL 和它的相对形式,并且它的相关成分放入一个对象中,方便访问这些 URL 相关成分。当解析相对形式的 URL 时,返回的对象会自动为绝对形式 URL 中没有的成分(如 protocol, host , etc )添加空字符串作为值。另外,当解析的 URL 没有 authority (见下面的列表),返回的对象中的 pathname 属性会包含通信协议冒号后的数据。

$.mobile.path.parseUrl() 只有一个参数 URL (string, 可选) ,其值为一个 URL 的相对或绝对形式。

另外,$.mobile.path.parseUrl() 会返回一个包含 URL 相关成分的对象,这个对象的属性是模仿浏览器中的 location 对象。具体的属性如下:

  • hash URL 中的一个部分,从 URL 中第一个 "#" 开始的部分。
  • host URL 的主机名及端口。
  • hostname URL 的主机名。
  • href 被解析的原始 URL 。
  • pathname URL 所引用的文件或目录的路径。
  • port URL 中指定的端口。大多数 URLs 依赖于数据传输协议所用的默认端口,所以这个值在大多数时候都可能是空字符串。
  • protocol 数据传输协议,URL 中 ':' 之前的部分。
  • search URL 中的从 "?" 字符开始的部分,代表 URL 查询。另外它也包括提供给入口的额外成分,如一些常见形式的开发者访问。
  • authority URL 的用户名,密码,主机名
  • directory pathname 中的目录部分,并且不包括任何文件名。
  • domain URL 中的数据传输协议和用户名,密码,主机名等信息,即域。
  • filename pathname 中的文件部分,并且不包括任何目录名。
  • hrefNoHash 从原始 URL 中减去 hash 部分。
  • hrefNoSearch 从原始 URL 中减去 hash 和 search 部分。
  • password authority 中的 password 部分。
  • username authority 中的 username 部分。

例子:

// 解析一个 URL
var obj = $.mobile.path.parseUrl("http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234");// 解析这个 URL 会返回一个包含以下属性的对象// obj.href:         http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content
// obj.hrefNoHash:   http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread
// obj.hrefNoSearch: http://jblas:password@mycompany.com:8080/mail/inbox
// obj.domain:       http://jblas:password@mycompany.com:8080
// obj.protocol:     http:
// obj.authority:    jblas:password@mycompany.com:8080
// obj.username:     jblas
// obj.password:     password
// obj.host:         mycompany.com:8080
// obj.hostname:     mycompany.com
// obj.port:         8080
// obj.pathname:     /mail/inbox
// obj.directory:    /mail/
// obj.filename:     inbox
// obj.search:       ?msg=1234&type=unread
// obj.hash:         #msg-content

十一. $.mobile.path.makePathAbsolute()

把一个相对的文件或目录路径转化为绝对路径。

具有两个参数 relPath (string, 必须) 和 absPath (string, 必须) ,具体如下:

—— relPath (string, 必须)

其值为一个相对的文件或目录路径。

—— absPath (string, 必须)

用于解析的一个绝对的文件或相对的路径。

$.mobile.path.makePathAbsolute() 会返回一个包含相对路径的绝对路径版本的字符串。

例子:

// 返回: /a/b/c/file.html
var absPath = $.mobile.path.makePathAbsolute("file.html", "/a/b/c/bar.html");// 返回: /a/foo/file.html
var absPath = $.mobile.path.makePathAbsolute("../../foo/file.html", "/a/b/c/bar.html");

十二. $.mobile.path.makeUrlAbsolute()

把一个相对 URL 转化为绝对 URL 。

具有两个参数 relUrl (string, 必选) 和 absUrl (string, 必选) ,具体如下:

—— relUrl (string, 必选)

一个相对形式的 URL 。

—— absUrl (string, 必选)

用于解析的一个绝对的文件或相对的路径。

$.mobile.path.makeUrlAbsolute() 会返回一个包含相对 URL 的绝对 URL 版本的字符串。

例子:

// 返回: http://foo.com/a/b/c/file.html
var absUrl = $.mobile.path.makeUrlAbsolute("file.html", "http://foo.com/a/b/c/test.html");// 返回: http://foo.com/a/foo/file.html
var absUrl = $.mobile.path.makeUrlAbsolute("../../foo/file.html", "http://foo.com/a/b/c/test.html");// 返回: http://foo.com/bar/file.html
var absUrl = $.mobile.path.makeUrlAbsolute("//foo.com/bar/file.html", "http://foo.com/a/b/c/test.html");// 返回: http://foo.com/a/b/c/test.html?a=1&b=2
var absUrl = $.mobile.path.makeUrlAbsolute("?a=1&b=2", "http://foo.com/a/b/c/test.html");// 返回: http://foo.com/a/b/c/test.html#bar
var absUrl = $.mobile.path.makeUrlAbsolute("#bar", "http://foo.com/a/b/c/test.html");

十三. $.mobile.path.isSameDomain()

比较两个 URL 的域。

具有两个参数 url1 (string, 可选) 和 url2 (string, 可选) 具体情况如下:

—— url1 (string, 可选)

一个相对 URL。

—— url2 (string, 可选)

url2 (string, required) 一个需要解析的绝对 URL 。

返回值为 boolean 型变量,若两个域匹配,则返回 "true" ,否则返回 "false" 。

例子:

// 返回: true
var same = $.mobile.path.isSameDomain("http://foo.com/a/file.html", "http://foo.com/a/b/c/test.html");// 返回: false
var same = $.mobile.path.isSameDomain("file://foo.com/a/file.html", "http://foo.com/a/b/c/test.html");// 返回: false
var same = $.mobile.path.isSameDomain("https://foo.com/a/file.html", "http://foo.com/a/b/c/test.html");// 返回: false
var same = $.mobile.path.isSameDomain("http://foo.com/a/file.html", "http://bar.com/a/b/c/test.html");

十四. $.mobile.path.isRelativeUrl()

判断一个 URL 是否是相对 URL 。

它具有一个参数 URL (string, 必选) ,其值为一个相对或绝对的 URL 。

返回值为 boolean 型变量,若 URL 为相对形式的 URL ,则返回 "true" ,否则返回 "false" 。

例子:

// 返回: false
var isRel = $.mobile.path.isRelativeUrl("http://foo.com/a/file.html");// 返回: true
var isRel = $.mobile.path.isRelativeUrl("//foo.com/a/file.html");// 返回: true
var isRel = $.mobile.path.isRelativeUrl("/a/file.html");// 返回: true
var isRel = $.mobile.path.isRelativeUrl("file.html");// 返回: true
var isRel = $.mobile.path.isRelativeUrl("?a=1&b=2");// 返回: true
var isRel = $.mobile.path.isRelativeUrl("#foo");

十五. $.mobile.path.isAbsoluteUrl()

判断一个 URL 是否是绝对 URL 。

它具有一个参数 URL (string, 必选) ,其值为一个相对或绝对的 URL 。

返回值为 boolean 型变量,若 URL 为绝对形式的 URL ,则返回 "true" ,否则返回 "false" 。

例子:

// 返回: true
var isAbs = $.mobile.path.isAbsoluteUrl("http://foo.com/a/file.html");// 返回: false
var isAbs = $.mobile.path.isAbsoluteUrl("//foo.com/a/file.html");// 返回: false
var isAbs = $.mobile.path.isAbsoluteUrl("/a/file.html");// 返回: false
var isAbs = $.mobile.path.isAbsoluteUrl("file.html");// 返回: false
var isAbs = $.mobile.path.isAbsoluteUrl("?a=1&b=2");// 返回: false
var isAbs = $.mobile.path.isAbsoluteUrl("#foo");

十六. $.mobile.path.get()

该方法可以判断一个 URL 的目录部分。如果 URL 末尾没有反斜杠,则 URL 最后的部分会被认为是文件名。这个情况对于站长来说应该不陌生,如 http://kayosite.com/aaa/ ,URL 中最后的部分 "aaa/" 应该是一个目录,而 http://kayosite.com/aaa/xxx.zip 中最后的部分 "xxx.zip" 则应该是一个文件名。这也是 Kayo 之前建议注意网址末尾是否需要添加反斜杠的原因。

这个方法具有一个参数 url (string, 必选) ,其值是一个相对或绝对的 URL 。

返回值为 URL 中的目录部分。

例子:

// 返回: http://foo.com/a/
var dirName = $.mobile.path.get("http://foo.com/a/file.html");// 返回: http://foo.com/a/
var dirName = $.mobile.path.get("http://foo.com/a/");// 返回: http://foo.com/a
var dirName = $.mobile.path.get("http://foo.com/a");// 返回: //foo.com/a/
var dirName = $.mobile.path.get("//foo.com/a/file.html");// 返回: /a/
var dirName = $.mobile.path.get("/a/file.html");// 返回: ""
var dirName = $.mobile.path.get("file.html");// 返回: /
var dirName = $.mobile.path.get("/file.html");// 返回: ?a=1&b=2
var dirName = $.mobile.path.get("?a=1&b=2");// 返回: foo
var dirName = $.mobile.path.isAbsoluteUrl("#foo");

十七. $.mobile.base

获取根元素。

十八. $.mobile.silentScroll()

静默滚动到某个 Y 值处,并且不触发任何事件。

它具有一个参数,yPos (number, 默认为 0),其值为需要滚动到的 Y 位置。

十九. $.mobile.activePage

引用当前激活的页面。

二十. 关于方法的调用

1. 方法调用相应 JavaScript 的引入

在介绍自定义 jQuery Mobile 默认配置时,曾经说明了相应的 JavaScript 语句需要放置在 jQuery 库和 jQuery Mobile 库之间,而 jQuery Mobile 方法是对 jQuery Mobile 的调用,因此需要在引入 jQuery Mobile 库之后调用,具体如下:

<script src="jquery.min.js"></script>
<!-- 引入自定义 jQuery Mobile 默认配置相应的 JavaScript -->
<script src="custom-mobile.js"></script>
<script src="jquery-mobile.min.js"></script>
<!-- 引入 jQuery Mobile 的调用,包括 jQuery Mobile 的方法、事件检测等全部应用性 JavaScript -->
<script src="my-site.js"></script>

2. 方法的调用

对于 jQuery 开发者,应该比较习惯在触发 ready 事件后执行 JavaScript ,例如:

$(document).ready(function(){// 执行 JavaScript
});

或简写为,

$(function(){// 执行 JavaScript
});

这里说明一下,当 DOM 已经加载,并且页面(包括图像)已经完全呈现出时,会触发 ready 事件。

而在系列文章的上一篇中,Kayo 介绍了 pageinit 事件,它在 DOM 加载完成后(包括 jQuery Mobile 对元素的 DOM 增强),就会触发,即它比 ready 更早的触发。

但由于 jQuery Mobile 驱动的网站由 Ajax 导航,因此即使一个文档中包含多个 'page' ,当第一个 'page' 的 DOM 和内容加载完毕后就会触发 ready 事件,而 pageint 也只需第一个 'page' 的 DOM 加载完毕后即触发。

而最终利用那种事件作为开始调用方法的合适时机,会涉及很多方便的考虑,开发者应该根据实际情况作出选择。

下面例举一个例子说明如何调用 jQuery Mobile 方法,由于 jQuery Mobile 的方法很多,这里只使用 $.mobile.changePage() 方法演示如何调用方法。例子中的 JavaScript 代码如下:

$(function(){$("#home").bind('swipeleft', function(){$.mobile.changePage('./page-2.html', {transition: "slide",role: "dialog"});});
});

上例中通过检测向左划动事件触发跳转到一个外部页面,同时使用 'slide' 转场动画并以对话框形式显示新页面。

也可以看 Demo(建议使用 PC 上的 Firefox、Chrome 等现代浏览器和 IE9+ 或 Android , iPhone/iPad 的系统浏览器浏览,下同)。

在这个例子中,并不适合利用 pageinit 事件,下面再放上一个 Demo ,其内容与上例大致相同,只是利用的 pageinit 事件,读者可以测试这个 Demo ,可能会发生不断在两个页面往复来回的问题。这是因为,从第二页返回第一页并触发 pageinit 事件时,第一页的 DOM 已加载完毕,包括 JavaScript 语句,但页面过场并未开始,这时页面再直接滑动,可能会重新触发 swipeleft 事件,于是不断往复。因此,在使用 pageinit 事件时需要考虑 jQuery Mobile 中其他事件、方法之间的互相影响。

pageinit 版本 Demo

原文由 Kayo Lee 发表,原文链接:http://kayosite.com/web-app-by-jquery-mobile-and-html5-methods-part-two.html

使用 jQuery Mobile 与 HTML5 开发 Web App (十四) —— jQuery Mobile 方法下相关推荐

  1. 使用 jQuery Mobile 与 HTML5 开发 Web App (十五) —— jQuery Mobile 与响应式

    jQuery Mobile 在刚推出的时候,曾经宣传了几个重要的特点,除了 Kayo 在本系列文章中多次介绍的"触摸屏优化"外,另外一个最直接的特点就是"响应式设计&qu ...

  2. 使用 jQuery Mobile 与 HTML5 开发 Web App (十二) —— jQuery Mobile 页面事件与 deferred

    在系列的上一篇文章<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 事件详解>中,Kayo 介绍了除页面事件外的其他 jQuery ...

  3. 使用 jQuery Mobile 与 HTML5 开发 Web App (十九) —— HTML5 对 Web App 的影响

    在本系列文章的开头,Kayo 曾经介绍过 Web App 的优缺点,并且说明了 HTML5 在其中起的作用,当然,Web Apps 的发展需要 HTML5 , CSS 与 JavaScript 以及后 ...

  4. 使用 jQuery Mobile 与 HTML5 开发 Web App (十) —— jQuery Mobile 默认配置与事件基础

    从本文开始,使用 jQuery Mobile 与 HTML5 开发 Web App 系列将 会进入第三部分--jQuery Mobile 事件与方法,这其中将会利用之前所讲述的 jQuery Mobi ...

  5. 使用 jQuery Mobile 与 HTML5 开发 Web App (十六) —— HTML5 Web Storage

    绝大多数的软件都需要使用某种具有持久性的方式来存储数据,Web Apps 也不例外,涉及到完整后台的 Web Apps ,可以直接在后台使用 mysql 等数据库来存储数据,但过多的 sql 查询会影 ...

  6. 使用 jQuery Mobile 与 HTML5 开发 Web App (十八) —— HTML5 Web Workers

    本文要介绍的是 HTML5 的 Web Workers 特性,它解决了 JavaScript 开发中一个重大的问题 -- 在后台运行 JavaScript .与本系列前两篇文章介绍的特性相似,Web ...

  7. 使用 jQuery Mobile 与 HTML5 开发 Web App (十三) —— jQuery Mobile 方法上

    本篇介绍的,是 jQuery Mobile 的方法.对比于 jQuery 方法可以实现 DOM 遍历,动画,Ajax 等各种丰富的操作,jQuery Mobile 的方法更像是 jQuery Mobi ...

  8. 使用 jQuery Mobile 与 HTML5 开发 Web App (十一) —— jQuery Mobile 事件详解

    在前文<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 默认配置与事件基础>中,Kayo 对 jQuery Mobile 事件的基 ...

  9. 使用 jQuery Mobile 与 HTML5 开发 Web App (九) —— jQuery Mobile 页面与对话框

    在<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 基础>中,Kayo 曾经简略介绍过 jQuery Mobile 的页面组件,当 ...

最新文章

  1. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
  2. Leetcode: Maximal Rectangle
  3. 无线路由安全功能的保证之DHCP
  4. Linux/Ubuntu下安装QQ2012
  5. 如何解析字符串类型的xml
  6. Linux服务器 常用命令
  7. bzoj千题计划116:bzoj1025: [SCOI2009]游戏
  8. 使用sharding-jdbc实现水平分库+水平分表
  9. 一文搞懂synchronized原理
  10. (day 33 - 位运算 )剑指 Offer 56 - II. 数组中数字出现的次数 II
  11. matlab_取整函数
  12. 【stm32学习】正点原子stm32f103学习——开发板入门
  13. mysql phpmyadmin远程_phpMyAdmin远程连接mysql数据库
  14. python打印的时候print(f“*******“) 的括号里的 f‘ ‘ 是什么意思 ?
  15. Hello hello ~
  16. BUUCTF-社团考核
  17. 如何彻底卸载SQL Server 2008
  18. 学Python真的没用吗?Python到底可以干什么?
  19. IDEA中maven使用tomcat插件,tomcat并没有启动,无tomcat日志信息
  20. 快手did egid参数分析

热门文章

  1. 求一元二次方程(信息学奥赛一本通-T1058)
  2. 信息学奥赛一本通C++语言——1037:计算2的幂
  3. 22 CO配置-控制-产品成本控制-成本对象控制-检查制造订单 (PP) 的评估变式
  4. php返回上一层的函数6,[PHP]实用函数6第1/2页
  5. 1 MLP-Mixer: An all-MLP Architecture for Vision
  6. weblogic jms消息 删除_利用 Kafka 设置可靠的高性能分布式消息传递基础架构
  7. mysql innoback_innobackex工具备份mysql数据
  8. python怎么播放本地录音_Python播放音频与录音
  9. PHP二维码在线制作生成系统源码 无需数据库 带logo图标
  10. Mouse Jiggler – 自动移动光标,防止电脑启动屏保、进入休眠[Windows]