2016-05-05 8 views
0

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?

+0

Wo wird die 'Nachricht'-Funktion ausgeführt? In der Hintergrundseite? In der Popup-Seite? – apsillers

Antwort

0

Ich denke, Sie vermischen die Dinge ein bisschen. Versuchen Sie diesen Code

chrome.runtime.sendMessage("SomeMessage"); //Content script 

Jetzt warten Sie auf diese Nachricht in Ihrem background.js.

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){ alert (response)}); 

Es sollte Ihre Nachricht warnen. In diesem Fall "SomeMessage".

+0

Vielen Dank für Ihre Antwort. Ich habe ein anderes Problem behoben, das dieses Problem obsolet macht. – Jared

Verwandte Themen