首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

应用 HTML5 开发离线应用

2012-11-14 
使用 HTML5 开发离线应用http://www.ibm.com/developerworks/cn/web/1011_guozb_html5off/HTML5 是目前正

使用 HTML5 开发离线应用

http://www.ibm.com/developerworks/cn/web/1011_guozb_html5off/

HTML5 是目前正在讨论的新一代 HTML 标准,它代表了现在 Web 领域的最新发展方向。在 HTML5 标准中,加入了新的多样的内容描述标签,直接支持表单验证、视频音频标签、网页元素的拖拽、离线存储和工作线程等功能。其中一个新特性就是对离线应用开发的支持。

在开发支持离线的 Web 应用程序时,开发者通常需要使用以下三个方面的功能:

  1. 离线资源缓存:需要一种方式来指明应用程序离线工作时所需的资源文件。这样,浏览器才能在在线状态时,把这些文件缓存到本地。此后,当用户离线访问应用程序时,这些资源文件会自动加载,从而让用户正常使用。HTML5 中,通过 cache manifest 文件指明需要缓存的资源,并支持自动和手动两种缓存更新方式。
  2. 在线状态检测:开发者需要知道浏览器是否在线,这样才能够针对在线或离线的状态,做出对应的处理。在 HTML5 中,提供了两种检测当前网络是否在线的方式。
  3. 本地数据存储:离线时,需要能够把数据存储到本地,以便在线时同步到服务器上。为了满足不同的存储需求,HTML5 提供了 DOM Storage 和 Web SQL Database 两种存储机制。前者提供了易用的 key/value 对存储方式,而后者提供了基本的关系数据库存储功能。

尽管 HTML5 还处于草稿状态,但是各大主流浏览器都已经实现了其中的很多功能。Chrome、Firefox、Safari 和 Opera 的最新版本都对 HTML5 离线功能提供了完整的支持。IE8 也支持了其中的在线状态检测和 DOM Storage 功能。下面将具体介绍 HTML5 离线功能中的离线资源缓存、在线状态检测、DOM Storage 和 Web SQL Database,最后通过一个简单的 Web 程序说明使用 HTML5 开发离线应用的方法。


当用户在离线状态下访问“clock.html”时,页面将无法展现。为了支持离线访问,开发者必须添加 cache manifest 文件,指明需要缓存的资源。这个例子中的 cache manifest 文件为“clock.manifest”,它声明了 3 个需要缓存的资源文件“clock.html”、“clock.css”和“clock.js”。


清单 2. clock.manifest 代码

修改后,当用户在线访问“clock.html”时,浏览器会缓存“clock.html”、“clock.css”和“clock.js”文件;而当用户离线访问时,这个 Web 应用也可以正常使用了。


?

这个页面的源文件是 index.html,它的代码如清单 8 所示。



清单 8 页面 HTML 代码

在 body 中声明了一个按钮和一个无序列表。当按下“New Note”按钮时,newNote 函数将被调用,它用来添加一条新的便签。而无序列表初始为空,它是用来显示便签的列表。

  • cache manifest 文件

    定义 cache manifest 文件,声明需要缓存的资源。在这个例子中,需要缓存“index.html”、“server.js”、“data.js”和“UI.js”等 4 个文件。除了前面列出的“index.html”外,“server.js”、“data.js”和“UI.js”分别包含服务器相关、数据存储和用户界面代码。cache manifest 文件定义如下。



    清单 9 cache manifest 文件

    window.addEventListener("online", SyncWithServer,false);

    data.js 中的代码包含添加便签、删除便签和与服务器同步等数据操作。其中用到了 navigator.onLine 属性、online 事件、DOM Storage 等 HTML5 新功能。

    • 添加便签:addDataItem
      1. 通过 navigator.onLine 判断是否在线。
      2. 如果在线,那么调用 addServerItem 直接把数据存储到服务器上。addServerItem 将在后面列出。
      3. 如果离线,那么把数据添加到 localStorage 的“toAdd”项中。
      • 删除便签:removeDataItem
        1. 通过 navigator.onLine 判断是否在线。
        2. 如果在线,那么调用 removeServerItem 直接在服务器上删除数据。removeServerItem 将在后面列出。
        3. 如果离线,那么把数据添加到 localStorage 的“toRemove”项中。
        • 数据同步:SyncWithServer

          在 data.js 的最后一行,注册了 window 的 online 事件处理函数 SyncWithServer。当 online 事件发生时,SyncWithServer 将被调用。其功能如下。

          1. 如果 navigator.onLine 表示当前离线,则不做任何操作。
          2. 把 localStorage 中“toAdd”项的所有数据添加到服务器上,并删除“toAdd”项。
          3. 把 localStorage 中“toRemove”项的所有数据从服务器中删除,并删除“toRemove”项。
          4. 删除当前页面列表中的所有便签。
          5. 调用 getServerItems 从服务器获取所有便签,并添加在页面列表中。getServerItems 将在后面列出。
        • 服务器相关代码

          服务器相关代码定义在 server.js 中。



          清单 12 服务器相关代码 server.js
          总结

          本文介绍了 HTML5 为了支持离线应用程序新增的强大功能。通过阅读本文,读者能够了解到 HTML5 中离线相关特性的基本用法,从而掌握利用 HTML5 开发 Web 离线应用的方法。

  • 热点排行