为什么service-worker的self.addEventListener在angularjs中不起作用

时间:2016-07-11 03:44:43

标签: angularjs node.js service-worker

我现在正试图在我的angularjs项目中首先使用service-worker脱机。我的项目由自耕农搭建,因为这些线路服务于工作人员,如下所示。

self.addEventListener('install', function(e) {
  e.waitUntil(
    caches.open(cacheName).then(function(cache) {
      console.log('[ServiceWorker] Caching App Shell');
      return cache.addAll(filesToCache);
    })
  );
});

并在我的index.jade

中调用并注册服务工作者
script.
    if('serviceWorker' in navigator) {
        navigator.serviceWorker
            .register('app/service-worker.js')
            .then(function() { 
                console.log('Service Worker Registered'); 
            })
            .catch(function(err) {
                console.log('ServiceWorker registration failed: ', err);
            });
    }

我收到了Service Worker Registered条消息,但问题是服务工作者中的addEventListener类似于应用程序运行时不会被触发。

self.addEventListener('install', function(e) 

self.addEventListener('activate', function(event) {

self.addEventListener('fetch', function(e) {

请帮我解决我错过的代码。

1 个答案:

答案 0 :(得分:2)

您注册的服务工作者位于app/service-worker.js,这意味着您的服务工作者的有效scopeapp/。只有app/下的页面才会被此服务人员控制。

您应该确保您注册的服务工作文件是从与您需要的最大范围对应的路径提供的。如果您将service-worker.js文件向上移动一个路径级别,并将其注册为service-worker.js而不是app/service-worker.js,则其有效范围将包含当前页面以及从子网站提供的任何页面路径。