为什么ServiceWorker不在导航器中?

问题描述

我正在尝试将ServiceWorkers合并到Java EE应用程序中,但导航器无法识别serviceWorker。我通读了其他文章,研究了设置,并解决了常见问题-我一直在寻找下一个解决方案。

Web服务器:JBOSS-EAP 7.0

浏览器:Firefox 81.0.1

URL:本地主机(HTTP)

文件位置:index.jsp和serviceworkers.js都位于WEB-INF根文件夹中

Index.jsp:

<script>
console.log('Attempting to register ServiceWorker...');
if ('serviceWorker' in navigator) {
  window.addEventListener('load',function() {
    navigator.serviceWorker.register('serviceworker.js').then(function(registration) {
      // Registration was successful
      console.log('ServiceWorker registration successful with scope: ',registration.scope);
    },function(err) {
      // registration Failed :(
      console.log('ServiceWorker registration Failed: ',err);
    });
  });
}
else{
    console.log('serviceWorker not in navigator');
    console.log(navigator);
}
</script>

serviceworker.js:

var CACHE_NAME = 'offline-inspections-cache-v1';
var urlsToCache = [
  '/Offlineinspections/',...
];

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);
      })
  );
});

浏览器控制台输出

enter image description here

我使用几乎相同的代码,使用Chrome扩展程序运行了网络服务器,并且运行正常。我尝试了各种建议的解决方案,但无法解决任何问题。有什么想法去找?

解决方法

在使用localhost和Firefox时,需要启用dom.serviceWorkers.testing.enabled标志:

  1. 在Firefox中,转到about:config
  2. 搜索“ dom.serviceWorkers.testing.enabled”
  3. 将标志切换为TRUE

在那里,请确保dom.serviceWorkers.enabled也设置为TRUE