我的问题是,在注册 serviceWorker 后,navigator.serviceWorker.controller 始终为空。我从不强制刷新,只是刷新页面。我使用 Google Chrome 42.0.2311.152 m(32 位)对其进行了测试。
var currentServiceWorker = null;
navigator.serviceWorker.register(SERVICE_WORKER_URL).then(function(serviceWorkerRegistration {
if (navigator.serviceWorker.controller) {
currentServiceWorker = navigator.serviceWorker.controller;
} else {
currentServiceWorker = serviceWorkerRegistration.active;
}
});
根据这个:
ServiceWorkerContainer 接口的控制器只读属性在其状态被激活时返回一个 ServiceWorker 对象(与 ServiceWorkerRegistration.active 返回的对象相同)。如果请求是强制刷新(Shift + 刷新)或没有活动的工作人员,则此属性返回 null。(来源:https ://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller )
navigator.serviceWorker.controller
应该返回与 相同的对象serviceWorkerRegistration.active
。但是.active
我得到了积极的工人,.controller
没有。
你对这种情况有什么想法吗?
谢谢你,安迪