2016-08-02 16 views
0
chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
}); 

Ich möchte 'Port' außerhalb dieser Chrome API-Funktion verwenden, wie mache ich das?Rufen Sie JavaScript-Funktion Ergebnis außerhalb der Funktion

+0

Haben Sie versuchen, rufen sie sofort anstelle einer anderen Methode Port Variable übergeben? –

Antwort

1

einfach:

rufen entweder eine Funktion nach dem Antwortwert zu übergeben:

chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    callback(port); 

}); 

function callback(value){ 
    console.log(value); //accessed value outside that function 
} 

OR

eine globale Variable erstellen und die reponse es

var portValue; 
chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    portValue = port; 

}); 
zuweisen

Je nachdem, wie Sie den Wert verwenden möchten, können Sie eine der Methoden anpassen.

0

Löst dies Ihr Problem?

var currentPort; 
chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    currentPort = port; 
}); 
+0

Uncaught TypeError: Die Eigenschaft 'postMessage' von undefined kann nicht gelesen werden CODE: var currentPort; chrome.runtime.onConnect.addListener (function (port) { console.assert (port.name == "Knockknock"); // Funktion aanroepen() { // port.postMessage ({Witz: „knock klopfe "}); //} port.postMessage ({witz:" klopf klopf "}); currentPort = port; }); currentPort.postMessage ({witz: "Klopf klopf"}); – user1857116

+0

Es sieht so aus, als ob Sie versuchen, 'postMessage' in' currentPort' zu rufen, bevor der Listener aufgerufen wurde. –

0
someFunction function(){ 
    return chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    return port; 

}); 

var port = someFunction(); 
Verwandte Themen