高级程序设计——离线应用

前言

  1. 开发离线Web应用需要的步骤:
    • 确保应用知道设备是否能上网
    • 应用还必须能访问一定的资源(图像、JavaScript、css等)
    • 必须有一块本地空间用于保存数据,无论能否上网都不妨碍读写

离线检测

  1. navigator.onLine属性。

    • 值为true表示设备能上网,false表示不能上网
    • 在不同浏览器间有差异,单独使用这个属性不能确定网络是否连通。即便如此,在请求发生错误的情况下,检测这个属性仍然是管用的。
  2. 两个事件:

    • online:当网络从离线变为在线时触发
    • offline:从在线变为离线时触发
    • 在window对象上触发
  3. 为了检测应用是否离线,在页面加载后,最好先通过navigator.onLine取得初始的状态。然后通过上述两个事件来确定网络连接状态是否变化。当上述事件触发时,navigator.onLine属性的值也会改变,不过必须要手工轮询这个属性才能检测到网络状态的变化

应用缓存

  1. Appcache:是从浏览器的缓存中分出来的一块缓存区。要想在这个缓存中保存数据,可以使用一个描述文件,列出要下载和缓存的资源

    CACHE MANIFEST
    
    #Comment
    
    
    file.js
    file.css

    在最简单的情况下,描述文件中列出的都是需要下载的资源,以备离线时使用

  2. 要将描述文件与页面关联起来,可以在<html>中的mainfest属性中指定这个文件的路径
    <html mainfest="/offline.mainfest">

    • 告诉页面,/offline.mainfest中包含着描述文件
    • 这个文件的MIME类型必须是text/cache-mainfest
  3. applicationCache对象:

    • 有一个status属性,属性的值是常量,表示应用缓存的如下当前状态
      • 0:无缓存
      • 1:闲置,即应用缓存未得到更新
      • 2:检查中
      • 3:下载中
      • 4:更新完毕。可以通过swapCache()来使用了
      • 5:废弃。
    • 事件,表示其状态的改变
      • checking:在浏览器为应用缓存查找更新时触发
      • error:在检查更新或下载资源期间发生错误时触发
      • noupdate:在检查描述文件发现文件无变化时触发
      • downloading:在开始下载应用缓存资源时触发
      • progress:在文件下载应用缓存的过程中持续不断的触发
      • updateready:在页面新的应用缓存下载完毕且可以通过swapCache使用时触发
      • cached:在应用缓存完整可用时触发
    • 一般来说,上述事件会随着页面加载按上述顺序依次触发。不过调用update()方法也可以手工干预,让应用缓存为检查更新而触发上述事件。update()一经调用,应用缓存就会去检查描述文件是否更新(触发checking事件),然后就像页面刚刚加载一样,继续执行后续操作。
    • 如果触发了cached事件,就说明应用缓存已经准备就绪,不会再发生其他操作了
    • 如果触发了updateready事件,则说明新版本的应用缓存已经可用,而此时需要调用swapCache()来启用新应用缓存
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值