如何在一个固定的根

时间:2017-08-28 12:29:55

标签: javascript php model-view-controller service-worker

请帮助你。我想在自己的构建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?

希望,你可以帮助并非常感谢

1 个答案:

答案 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');