I would like to add service-worker caching to a website (not mine) so it will continue to work offline. I adapted service-worker registration code that works in my own website and built a test add-on.
Manifest:
"content_scripts": [
{ "matches": ["https://michaeleskin.com/abctools/abctools.html"],
"js": ["me_abc_caching.js"]}
],
"background": {
"scripts": ["service-worker.js"]
}
Content script:
// Register service-worker
if('serviceWorker' in navigator) {
let registration;
const registerServiceWorker = async () => {
serviceWorkerURL = browser.runtime.getURL('service-worker.js');
console.log("SW URL: " + serviceWorkerURL);
registration = await navigator.serviceWorker.register(serviceWorkerURL);
};
registerServiceWorker();
}
Registration fails ‘SecurityError: The operation is insecure’ - probably because the service worker file must be accessed over https not a local file, or part of an extension
I tried the same thing in Chrome and got a more definite error for the register(serviceWorkerURL):
origin of the provided scriptURL ('chrome-extension://fhhclgflaalhbhopkjjfobekbmpfjfob') does not match the current origin ('https://michaeleskin.com').
So I suspect that the answer to my question in the title is ‘no’.
Can anybody think of a way to achieve what I want to do?
