Navigator.serviceWorker.controller仅在webroot中工作

时间:2018-09-11 14:38:26

标签: service-worker

我正在尝试从名为ServiceWorker的Webroot子目录中获取一个appdashboard来工作... serviceworker会在chrome://serviceworker-internals/上安装,运行并可见,但其{{1 }}为空,因此我无法与其通信。如果我不限制范围(并将我的serviceworker文件移动到webroot),则可以正常工作。

Navigator.serviceWorker.controller

我尽可能简化了 const serviceWorker = navigator .serviceWorker .register('appdashboard/dashboard_serviceworker.js', { scope: 'http://localhost/appdashboard/' }) .then((swReg) => { console.log('[Service Worker (Dashboard)] service worker is registered', swReg); swRegistration = swReg; if (navigator.serviceWorker.controller != null) { console.log("controller is working") } if (navigator.serviceWorker.controller == null) { console.log("controller is NULL!") // <<<< its null :( } }) 来诊断问题,即使有这个白手起家的人,控制器也为空

serviceworker

1 个答案:

答案 0 :(得分:0)

我正在使用MVC路由,因此我的URL路径为localhost/dashboard,但文件结构为/appdashboard/,现在我从/appdashboard/ webroot和控制器初始化。

这是使我走上正确道路的那条线。

  

记住范围(包括范围)时,将页面的位置用作其范围   基础。或者,如果此代码包含在位于   example.com/product/description.html,“./”的范围表示   服务工作者仅适用于以下资源   example.com/product。