I'm making a Chrome Extension with MV3. I have a popup in which the user can select a language. The language needs to be read by an script which has to be injected into the website itself. However I can't read chrome.storage.sync neither can't i send a message in the injected script js file. So my question is how I would read data from chrome.storage inside a injected script file. I also tried setting a variable in a content script, but this also can't be read inside the injected script file.
manifest.json
{
"manifest_version": 3,
"permissions": ["storage"],
"background": {
"service_worker": "js/service_worker.js"
},
"content_scripts": [
{
"matches": ["*://.../*"],
"js": ["js/content-script.js"]
}
],
"web_accessible_resources": [
{
"resources": ["js/inject.js"],
"matches": ["*://.../*"]
}
],
"action": {
"default_popup": "popup/popup.html"
}
}
content-script.js
function importScript(src) {
let s = document.createElement('script');
s.src = chrome.runtime.getURL(src);
s.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(s);
}
window.hi = "test" // cant be read in the inject.js file...
importScript("js/inject.js")
inject.js
chrome.storage.sync.get() // undefined
window.hi // undefined
UPDATE I read through the docs again and stumbled upon window.postMessage which can be sent using content scripts and injected scripts! Question is closed.