41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
/* global navigator, window */
|
|
(function () {
|
|
if (!("serviceWorker" in navigator)) return;
|
|
|
|
var version = "docs-v3";
|
|
var workerUrl = "/sw.js?v=" + encodeURIComponent(version);
|
|
if (window.trustedTypes) {
|
|
try {
|
|
workerUrl = window.trustedTypes
|
|
.createPolicy("wrnexus-pwa-recovery", {
|
|
createScriptURL: function (value) {
|
|
return value;
|
|
},
|
|
})
|
|
.createScriptURL(workerUrl);
|
|
} catch {
|
|
// A previously-created policy can make creation fail; the same-origin
|
|
// string remains valid when Trusted Types enforcement is not active.
|
|
}
|
|
}
|
|
|
|
var recover = function () {
|
|
navigator.serviceWorker
|
|
.getRegistration()
|
|
.then(function (registration) {
|
|
if (
|
|
registration &&
|
|
registration.active &&
|
|
registration.active.scriptURL.includes(version)
|
|
) {
|
|
return;
|
|
}
|
|
return navigator.serviceWorker.register(workerUrl, { updateViaCache: "none" });
|
|
})
|
|
.catch(function () {});
|
|
};
|
|
|
|
if ("requestIdleCallback" in window) window.requestIdleCallback(recover, { timeout: 2000 });
|
|
else window.setTimeout(recover, 0);
|
|
})();
|