首页 > 代码库 > 9月2号=》446页-450页

9月2号=》446页-450页

16.2.3  判断在线状态

    为了判断浏览器的在线状态,HTML5提供了两种方法来检测是否在线。

    navigator.onLine属性:navigator.onLine属性可返回当前是否在线。如果返回true,则表示在线;如果返回false,则表示离线。当网络发生变化时,

                navigator.onLine的值也随之变化。开发者可以通过读取它的值获取网络状态。

    onlne/ofline事件:如果开发者需要在网络状态发生变化时立刻得到通知,则可以通过HTML5提供的online/offine事件来检测。当在线/离线状态切换时,body元素

              上的online/offline事件将会被触发,并沿着document.body、document和window冒泡。因此,开发者可以通过它们的online/offline事件来检测网路状态的变化。

 

16.2.4  applicationCache对象

    开启离线应用之后,javaScript可以通过applicationCache来控制离线缓存,applicationCache接口包含了一个status属性,

    该属性可能返回如下几个状态值:

      UNCACHED:applicationCache对象所在的主机没有开启离线应用功能。

      IDLE:空闲状态。

      CHECKING:正在检测本地缓存的manifest文件与服务器端manifest文件的差异。

      DOWNLOADING:正在下载需要缓存的数据。

      UPDATEREADY:已经从服务器把需要缓存的文件下载到本地,但还未更新本地缓存。

      OBSOLETE:缓存已经过期。

    ApplicationCache接口中定义了如下两个常用方法。

      void update():该方法强制检查服务器上manifest文件是否有更新。

      void swapCache():该方法用于手动更新本地缓存。它只能在applicationCache对象的updateReady事件被触发时调用。

 

16.2.5  离线应用的事件与监听

    从上面关于applicationCache的介绍可以看出,在applicationCache的使用过程中会不断地触发一系列事件。

    下面简单介绍离线应用的相关事件,当浏览者第一次访问指定网站如http://localhost:8888/cacheQs/index.html页面时,完整过程如下。

      (1)浏览器请求http://localhost:8888/cacheQs/index.html页面。

      (2)服务器返回index.html页面。

      (3)浏览器检测该页面是否指定了manifes属性,如果没有指定该属性,则将不会有后面行为;如果指定了该属性,则触发checking事件,检查manifest属性所指定

          的manifest文件是否存在,如果不存在,则触发error事件,不会指定第6步及后续步骤。

      (4)浏览器解析index.html页面,请求该页面所引起的其他资源,例如JavaScript文件、图片等。

      (5)服务器返回所有被请求的资源。

      (6)浏览器开始处理manifest文件。重新向服务器请求manifest文件中列出的所有资源,包括index.html页面。虽然前面已经下载过这些资源,但此时依然要重新下载一遍。

      (7)服务器返回所有要求在本地缓存的资源。

      (8)浏览器开始下载需要在本地缓存的资源。开始下载时触发ondownloading事件;在下载过程中不断地触发onprogress事件,以方便开发人员了解下载进度。

      (9)下载完成后触发oncache事件,表明服务器缓存完成。

      当浏览器再次访问http://localhost:8888/cacheQs/index.html页面时,前面的第1~5步完全相同。接下来浏览器会检查新下载的manifest文件与本地缓存的manifest文件是否有改变:

        如果manifest没有改变,则触发onnoupdate事件,没有后续步骤。

        如果manifest文件有改变,则继续执行上面的第7、8步,当把所有需要在本地缓存的文件下载完成后,浏览器触发onupdateready事件,而不是触发oncached事件。

9月2号=》446页-450页