Grazie Wladimir Palant
per indicare la direzione, eppure ancora mi ha portato un po 'di tempo per capire il codice finale. Ho messo il mio risultato qui per riferimento ad altri in futuro. (Ho semplificato il codice un po 'qui per scopo l'elaborazione, ma la struttura principale dovrebbe essere corretto.)
content.js: (clicca un link per aprire la pagina delle opzioni)
$("#options").click(function(){
self.port.emit("open_options", {});
});
background.js :
//regsiter the event
backgroundInit = function(worker) {
worker.port.on("open_options", function(request){
var tabs = require("sdk/tabs");
tabs.open({
//open a new tab to display options page
url: self.data.url("options.html"),
});
}
worker.port.on("pull_preferences", function(request){
var preferences = null;
//get preferences (from simple storage or API)
woker.emit("update_content_preferences", {preferences:preferences});
});
worker.port.on("push_preferences", function(request){
var preferences = request.preferences;
//write the preferences (to simple storage or API)
});
}
//register the page, note that you could register multiple ones
pageMod.PageMod({
include: self.data.url('options.html'),
contentScriptFile: [ self.data.url("lib/jquery-1.11.3.min.js"),
self.data.url("options.js")],
contentScriptWhen: 'end',
onAttach: backgroundInit
});
options.js: (questa pagina è anche al contesto di script contenuti)
$(document).ready(function(){
self.port.on("update_content_preferences", function(request){
var preferences = request.preferences;
//update options page values using the preferences
});
$("#save").click(function(){
var preferences = null;
//get preferences from options page
self.port.emit("push_preferences", {preferences:preferences});
});
self.port.emit("pull_preferences", {}); //trigger the pull upon page start
});
Riferimento: https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs
fonte
2016-02-08 10:06:22
Bene, ho usato il modulo Simple-Prefs. Funziona bene, grazie per quello! – dvcrn
grazie @Wladimir .. bel post .. – pratikabu
finalmente ho completato una bella implementazione di quello che hai detto. Inserirò sicuramente l'esempio funzionante di ciò che ho fatto .. grazie per i suggerimenti .. – pratikabu