{
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["style.css"],
"js": ["script.js"]
}
],
}
だけど manifest レベルで宣言してるから ユーザが on/off 切り替えたり 設定に応じたフラグを追加したりできない
これまで諦めてたけど content_script 内でメッセージングや共通のストレージ読み取ればできそう
永続するデータなら chrome のストレージに入れておけば content script から読み取れる
chrome.storage.local.get({enabled: true, mode: "default"}, ({enabled, mode}) => {
if(!enabled) return
switch(mode){
// some cases
}
})
localStorage だと拡張機能じゃなくてスクリプトが埋め込まれたページのストレージを参照するので使えない
localStorage を使いたい(非同期がイヤ)とか バックグランドページのメモリ上のみのデータを使いたいなら messaging
// content script
chrome.runtime.sendMessage("require-cscript-data", ({enabled, mode}) => {
if(!enabled) return
switch(mode){
// some cases
}
})
// background
let enabled = true
let mode = "default"
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if(message === "require-cscript-data"){
sendResponse({enabled, mode})
}
})
CSS の場合は content_scripts で埋め込まれた JavaScript で style タグを作る