请帮助你。我想在自己的构建php mvc框架上使用Web入门套件。 Web入门工具包的一部分是使用服务工作者。
在我的根文件夹中(在我的情况下称为public)我有服务工作文件,我将其注册为像经济学这样的原因:
if ('serviceWorker' in navigator &&
(window.location.protocol === 'https:' || isLocalhost)) {
navigator.serviceWorker.register('service-worker.js')
.then(function(registration) {
....
如果我尝试调用root(index.php)页面,它运行良好。但是,如果我尝试调用任何路由,服务工作者将被调用两次,一个给我一个错误,第二个工作正常。我发现,首先尝试抛出错误只需在我的控制器路径上添加service-worker.js。
例如,如果我尝试打开mydomain / controller,我会收到错误,找不到mydomain / controller / service-worker.js。当然,那里有任何人。
让你们有一个想法,如何设置只在root中调用service-worker?
希望,你可以帮助并非常感谢
答案 0 :(得分:1)
问题来自这里:
navigator.serviceWorker.register('service-worker.js')
您告诉浏览器获取文件service-worker.js
但不定义任何文件夹。这将使浏览器在相对于当前URL的路径中查找文件。当你在domain.com/上时,相对路径变为domain.com/service-worker.js但是当你在domain.com/controller上时,相对路径变为domain.com/controller/service-worker.js
要解决此问题,您可以使用基本标记
<base href="domain.com"/>
这将告诉浏览器任何相对路径应该相对于该路径而不是当前路径。
另一种方法也可以是简单地使用绝对路径指向service-worker.js
navigator.serviceWorker.register('/service-worker.js');