问题描述
我正在尝试将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);
})
);
});
浏览器控制台输出:
我使用几乎相同的代码,使用Chrome扩展程序运行了网络服务器,并且运行正常。我尝试了各种建议的解决方案,但无法解决任何问题。有什么想法去找?
解决方法
在使用localhost和Firefox时,需要启用dom.serviceWorkers.testing.enabled标志:
- 在Firefox中,转到about:config
- 搜索“ dom.serviceWorkers.testing.enabled”
- 将标志切换为TRUE
在那里,请确保dom.serviceWorkers.enabled也设置为TRUE