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

我想在这个Chrome API函数之外使用'port',我该怎么做?调用javascript函数结果函数

+0

你尝试端口变量传递到另一个方法,而不是立即调用呢? –

回答

1

简单:

要么调用一个函数的响应之后,价值传递给它:

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

创建一个全局变量和效应初探分配给它

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

}); 

取决于您想如何使用该值,您可以调整任何方法。

0

这是否解决您的问题?

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

Uncaught TypeError:无法读取未定义的属性'postMessage' CODE: var currentPort; chrome.runtime.onConnect.addListener(功能(端口){ console.assert(port.name == “knockknock”); //功能aanroepen(){// port.postMessage({笑话:“敲敲入“}); //} port.postMessage({joke:”Knock knock“}); currentPort = port; }); currentPort.postMessage({joke:“敲敲”}); – user1857116

+0

看起来你正试图在侦听器被调用之前在'currentPort'上调用'postMessage'。 –

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();