Utilizzare chrome.extension API.
È possibile inviare richieste avanti e indietro o utilizzare ancora meglio una porta per la comunicazione continua.
L'esempio che fornisco creerà una comunicazione bidirezionale tra la finestra popup e la pagina di sfondo che si connettono quando il popup è aperto.
Basta creare un file socket.js incluso nella pagina di sfondo e nella pagina popup. Poi su ciascuna si può semplicemente dichiarare:
new Socket();
Qui è l'attuazione di socket.js:
var Socket = function() {
window.socket = this;
this.port = chrome.extension.connect({name:"popupToBackground"});
chrome.extension.onConnect.addListener(function(port) {
if(port.name == "backgroundToPopup") {}
else if(port.name == "popupToBackground") {
window.socket.port = chrome.extension.connect({name:"backgroundToPopup"});
}
else {
return;
}
port.onMessage.addListener(function(msg) {
try {
window[msg.namespace][msg.literal][msg.method].apply(this, msg.args);
}
catch(error) {
// your failed action goes here.
}
});
});
};
assicuratevi di fare il metodo generico chiama nel lavoro messaggio listener per voi. Mi piace il formato che ho dato sopra: è molto robusto. Per inviare messaggi avanti e indietro semplicemente inviare alla presa:
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
Quindi, se questo fosse eseguito dalla pagina popup poi lo sfondo della pagina chiamerei:
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
Per me questo è un posto molto bello oggetto javascript riutilizzabile. È anche possibile aggiungere funzioni di prototipo specifiche se si desidera - in questo modo la sua ancora più facile per inviare messaggi:
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
ora tutto quello che ho da dire è:
socket.sendOneTwo();
correlati: [Comunicare tra gli script nel contesto di fondo (di script di fondo, di azione del browser, azione della pagina, pagina opzioni, ecc)] (//stackoverflow.com/q/41420528) – Makyen
Possibile duplicato di [Come comunicare tra popup.js e background.js nell'estensione chrome?] (https://stackoverflow.com/questions/13546778/how-to-communicate -Tra-popup-js-e-background-js-in-cromo-estensione) – JerryGoyal