Ho uno script in background che è responsabile per ottenere e impostare i dati su un database localStorage
. I miei script di contenuto devono comunicare con lo script in background per inviare e ricevere dati.
In questo momento invio un oggetto JSON che contiene il comando e i dati a una funzione. Quindi, se sto cercando di aggiungere un oggetto al database, creerò JSON che ha un attributo command
che è addObject
e un altro oggetto che è i dati. Una volta completato, gli script in background inviano una risposta affermando che è andata a buon fine.
Un altro caso d'uso della funzione sarebbe chiedere i dati, nel qual caso invierebbe un oggetto indietro piuttosto che un successo / fallimento.
Il codice diventa una specie di hacky quando cerco di recuperare l'oggetto restituito dallo script di sfondo.
Sembra che ci sia probabilmente un semplice problema di design da seguire qui che non conosco. Alcune persone hanno suggerito problemi di progettazione futuri o promettenti, ma non ho trovato un ottimo esempio.
Script contenuto
function sendCommand(cmdJson){
chrome.extension.sendRequest(cmdJson, function(response){
//figure out what to do with response
});
}
Script in background
if (request.command == "addObject"){
db[request.id]= JSON.stringify(request.data);
sendResponse("success");
}
else if(request.command == "getKeystroke"){
var keystroke = db[request.id];
sendResponse(keystroke);
}