[löst] Webextension: Hur länka inställningar från options.js till content.js?
Jag håller på att skriva mig ett litet webbläsartillägg, men har kört fast när det kommer till att få mina inställningar till att faktiskt göra något.
Min options.js:
// Saves options to extensionApi.storage
function save_options() {
const testOne = document.getElementById('test1').checked;
const testTwo = document.getElementById('test2').checked;
browser.storage.sync.set({
testOne: testOne,
testTwo: testTwo
});
}
// Restores select box and checkbox state using the preferences
function restore_options() {
browser.storage.sync.get({
testOne: true,
testTwo: true
}, function(items) {
document.getElementById('test1').checked = items.testOne;
document.getElementById('test2').checked = items.testTwo;
});
}
document.addEventListener('DOMContentLoaded', function () {
restore_options();
document.getElementById("test1").addEventListener('click', save_options);
document.getElementById("test2").addEventListener('click', save_options);
});
Den fungerar som det ska. Men nu vill jag faktiskt få mina checkboxar att aktivera/inaktivera ett par content scripts (inställningar) till webbsidan jag valt i min manifest.json:
"content_scripts": [
{
"matches": ["https://*.youtube.com/*"],
"js": ["content.js"]
}
]
Min content.js:
// aktivera denna om checkbox test1 är checked
(function() {
alert("Test 1 aktiverat");
})();
// aktivera denna om checkbox test2 är checked
(function() {
console.log("Test 2 aktiverat");
})();
Hur gör jag så att mina checkboxar länkar till dessa två och aktiverar/avaktiverar dem?
---
EDIT: Löste det med detta i content.js:
function testEtt(){
browser.storage.sync.get({
testOne: true
},
function(settings) {
if (true === settings.testOne) {
alert("Test 1 aktiverat");
} else {
// Gör inget
}
});
}
browser.storage.onChanged.addListener(testEtt);
testEtt();