Tôi gặp vấn đề sau khi đăng ký serviceWorker navigator.serviceWorker.controller luôn là null. Tôi không bao giờ làm một lực lượng làm mới và chỉ cần làm mới trang. Tôi thử nghiệm nó với Google Chrome 42.0.2311.152 m (32-Bit).navigator.serviceWorker.controller luôn là null
var currentServiceWorker = null;
navigator.serviceWorker.register(SERVICE_WORKER_URL).then(function(serviceWorkerRegistration {
if (navigator.serviceWorker.controller) {
currentServiceWorker = navigator.serviceWorker.controller;
} else {
currentServiceWorker = serviceWorkerRegistration.active;
}
});
Theo này:
Bộ điều khiển thuộc tính chỉ đọc của giao diện ServiceWorkerContainer trả về một đối tượng ServiceWorker nếu trạng thái của nó được kích hoạt (giống đối tượng được trả về bởi ServiceWorkerRegistration.active). Thuộc tính này trả về null nếu yêu cầu làm mới lực (Shift + refresh) hoặc nếu không có nhân viên hoạt động. (Nguồn: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller)
navigator.serviceWorker.controller
nên trả về cùng một đối tượng là serviceWorkerRegistration.active
. Nhưng với .active
tôi nhận được công nhân hoạt động, với .controller
không.
Bạn có ý tưởng nào về tình huống đó không?
Cảm ơn bạn, Andi
đây là một cạm bẫy sử thi, tôi tin rằng nó phải được tài liệu tốt hơn - ít nhất một số thông báo lỗi rõ ràng sẽ được tốt đẹp. cảm ơn! – shabunc
@shabunc đã giải quyết được vấn đề, tôi nhận được null trong bộ điều khiển. –