SDK を使用して新しいバージョンのアドオン (Gmail を対象とする) を開発していますが、ユーザーのためにいくつかのブール値の設定を保存する必要があります。そのために、新しい「simple-prefs」API を試してみたいと思います。Mozilla のドキュメントとこのStackoverflow の質問に基づいて、何かを得ましたが、次の問題に直面しています。
1) 設定の変更をデータ内の外部スクリプトに適切に渡すことができません。変更を適用するには、アドオンを無効にしてから再度有効にする必要があります。
2) Gmail を開いたタブに設定が直接適用されるようにする方法。
これが私のpackage.jsonです:
{
"name": "Demo",
"license": "MPL 1.1/GPL 2.0/LGPL 2.1",
"author": "me",
...
"preferences": [{
"type": "bool",
"name": "option1",
"value": true,
"title": "Description Option1"
},
{
"type": "bool",
"name": "option2",
"value": true,
"title": "Description Option2"
}]
}
私のmain.js:
const pageMod = require("page-mod");
const data = require("self").data;
const prefSet = require("simple-prefs");
// Get the values for options
var option1 = prefSet.prefs.option1;
var option2 = prefSet.prefs.option2;
// Listen for changes
function onPrefChange(prefName) { prefSet.prefs[prefName]; }
prefSet.on("option1", onPrefChange);
prefSet.on("option2", onPrefChange);
exports.main = function() {
pageMod.PageMod({
include: ["https://mail.google.com/*","http://mail.google.com/*"],
contentScriptWhen: 'ready',
contentScriptFile: [data.url("jquery.js"),data.url("script.js")],
onAttach: function(worker)
{
worker.postMessage(option1);
worker.postMessage(option2);
}
});
}
私のscript.js(データ内):
(function(){
// Option 1
self.on("message", function(option1) {
if( option1 == true ) {
// Do this
}});
// Option 2
self.on("message", function(option2) {
if( option2 == true ) {
// Do this
}});
})();
私の main.js ファイルで postMessage プロトコルを使用し、それを私の script.js ファイルで呼び出すためのより適切な方法が確かにあります... アイデアや提案を自由に提案してください!