Ich arbeite an einer Chrome-Erweiterung, bei der ich einen Wert von einem Teil der Erweiterung zum anderen erhalten muss. Ich habe ein Hintergrundskript, das beide Skripte ausführt, wenn auf das Erweiterungssymbol geklickt wird. Ein Inhaltsskript erhält einen Wert von der Webseite und muss es an ein externes Skript senden. Wenn auf das Erweiterungssymbol geklickt wird, wird das externe Skript ausgeführt, das auf eine Nachricht wartet.Nachricht, die von einem Inhaltsskript an ein anderes übergibt
function message(){
console.log("Listening...");
var token = "";
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
console.log("Attempting to get message...");
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (typeof request != 'undefined'){
console.log("Printing token...");
token = request.token;
console.log(token);
received = true;
sendResponse({greeting: "Got Token"});
}
});
}
message();
Im Content-Skript, wenn eine Taste auf der Webseite angeklickt wird es eine Nachricht an das externe Skript senden soll. Hier ist der Code im Inhaltsskript.
chrome.runtime.sendMessage({token: token, URL: URL},function(response) {
console.log("Greeting 1");
console.log(response.greeting);
});
Als ich das Programm ausführen ich das „Hören“ ausgedruckt aus dem externen Skript bekommen und ich erhalte die „Gruß-1“ von dem Content-Skript ausgedruckt. Im externen Skript scheint der Listener jedoch nicht zu funktionieren. Ich kann einen Breakpoint darauf setzen und durch den Prozess gehen, aber es endet einfach damit, den Block innerhalb des Hörers zu überspringen und endet einfach am Ende der Funktion, die nichts tut. Kann jemand sehen, was ich falsch machen könnte?
Wo wird die 'Nachricht'-Funktion ausgeführt? In der Hintergrundseite? In der Popup-Seite? – apsillers