我正在尝试一个具有离线功能的弹簧MVC应用程序。除了获取处理程序外,所有功能都很好。
问题:
我能够成功注册我的服务工作者,但是在获取处理程序时,它无法正常工作。
我尝试的东西:
在获取处理程序上方和下方使用的调试器。我发现它从未被调用。我无法找到这种奇怪行为背后的原因。
self.addEventListener('install', function(event) {
console.log('The service worker is being installed.');
event.waitUntil(precache());
});
self.addEventListener('fetch', function(event) {
alert("Hi");
});
"服务工作者注册将提供的脚本URL与示波器联系起来,后来用于导航匹配。"
您可能正在做的是 navigator.serviceWorker.register( '{SOME_RESOURCE_PATH}/service-worker.js')
甚至设置scope: './'
。问题在于,这将使您的获取仅在https://foo.bar/{SOME_RESOURCE_PATH}/
上触发。这意味着您需要将SW设置在网站的根上,以删除所需的资源路径。您需要做的是更改配置,将SW放在站点的根部。
ex。您可以在mvc-config.xml
<mvc:resources mapping="/**" location="classpath:/PATH_TO_SW/"/>
然后注册SW看起来像
navigator.serviceWorker.register( '/service-worker.js')