首页 > 代码库 > 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页