服务人员可以让您缓存将在用户进入脱机模式时运行的文件。这是示例代码:
var CACHE_NAME = 'my-site-cache-v1';
var urlsToCache = [
'/',
'/styles/main.css',
'/script/main1.js',
'/script/main2.js'
];
self.addEventListener('install', function(event) {
// Perform install steps
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
因此,您定义了要缓存的文件列表[main.css,main1.js和main2.js],当用户脱机时将被加载。
在main1.js
文件中,我想定义一些代码,使其仅在服务工作者以离线模式加载文件时才运行。有什么方法可以检测到这一点吗?
if(script_is_loaded_by_sw_in_offline_mode_not_online)
{
//do some stuff here
}
答案 0 :(得分:0)
您可以使用navigator.onLine
来检测浏览器是处于联机还是脱机模式,因为无论联机模式还是脱机模式,服务工作者都将被注册,并且main1.js文件将始终像您一样被缓存已将其添加到urlsToCache中,您可以在main1.js文件中使用navigator.onLine
来检查所需的条件。
答案 1 :(得分:0)
事实证明,navigator.serviceWorker.controller
是我所需要的:
if(navigator.serviceWorker.controller)
{
//do some stuff here
}