Użyj chrome.extension API.
Możesz wysyłać żądania do iz powrotem lub jeszcze lepiej korzystać z portu do ciągłej komunikacji.
Podany przeze mnie przykład utworzy dwukierunkową komunikację między wyskakującym okienkiem a stroną w tle, które łączą się, gdy popup zostanie otwarty.
Wystarczy utworzyć plik socket.js, który jest zawarty zarówno na stronie w tle, jak i na stronie podręcznej. Następnie na każdej można po prostu zadeklarować:
new Socket();
Oto realizacja 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.
}
});
});
};
Upewnij się uczynić metoda rodzajowa wzywa w pracach wiadomość słuchacza dla Ciebie. Podoba mi się format, który podałem powyżej - jest bardzo solidny. Aby wysyłać wiadomości iz powrotem po prostu dodawać je do gniazda:
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
Więc jeśli to były wykonywane od strony podręcznego wówczas strona tło nazwałbym:
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
Dla mnie jest to bardzo miłe obiekt javascript wielokrotnego użytku. Można nawet dodać specyficzne funkcje prototypów, jeśli chcesz - w ten sposób jej jeszcze łatwiej wysyłać wiadomości:
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
Teraz wszystko co mam do powiedzenia to:
socket.sendOneTwo();
pokrewne: [komunikacji pomiędzy skryptami w kontekście tła (scenariusz tło, działania przeglądarki, działania, stronę Opcje, etc.)] (//stackoverflow.com/q/41420528) – Makyen
Możliwy duplikat [Jak komunikować się między popup.js a background.js w rozszerzeniu chrome?] (https://stackoverflow.com/questions/13546778/how-to-communicate -between-popup-js-and-background-js-in-chrome-extension) – JerryGoyal