Gracias Wladimir Palant
para señalar la dirección, sin embargo, todavía me llevó bastante tiempo para averiguar el código final. Pongo mi resultado aquí para referencia de otros en el futuro. (Que simplifica el código un poco aquí con fines de elaboración, pero la estructura principal debe ser correcta.)
content.js: (clic en un vínculo para abrir la página de opciones)
$("#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: (esta página está también en el contexto de la escritura de contenido)
$(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
});
Referencia: https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs
De acuerdo, usamos el módulo de preferencias simples. Funciona bien, gracias por eso! – dvcrn
gracias @Wladimir .. buena publicación .. – pratikabu
finalmente terminé una buena implementación de lo que dijiste. Seguramente publicaré la muestra de trabajo de lo que hice ... gracias por las pistas ... – pratikabu