1
私は、非同期関数呼び出しとその変数を変数に値を設定する方法を研究しており、それに多くの問題がありました。拡張子にファイルcontent.js
を付けてメッセージにするポートを作成します。Google Chrome拡張機能ポップアップでの非同期メッセージの送信
これを行うには、私が開いているウィンドウのタブを受け取る必要があります。そして、その属性はの機能のid
です。 この実装ではconsole.log()
呼び出しには到達できませんが、私は十分に理解できる非同期プログラミングについては理解していません。誰もこれで助けることができますか?私の問題は、2つのファイルが通信していないので、ポートが開いていないということです。
<script language = "Javascript">
function foo(callback){
var port = chrome.tabs.connect(chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
//sets curTab to current tab
console.log(tabs[0]);
var curTab;
setTimeout(function(tabs) {
curTab = tabs[0];
console.log(curTab);
}, 5000);
}),{name: "mode"})
//both files are preset to this so no need to message
var mode = "on";
document.getElementById("stop").onclick = function(){
if(mode === "off")
mode = "on";
else
mode = "off";
setMode();
console.log("clikityclik");
};
console.log(mode);
function setMode(){
/*sends message to port*/
if(port)
port.postMessage({newMode: mode});
else{
console.log("error: port not created");
}
}
}
私content.js
ファイルから該当するコードは以下の通りです。私は、彼らが送信されるたびに、このプログラムの目標は、div要素をクリックすると「content.js」ファイルのためにそれらのメッセージを受信するときcontent.js
にメッセージを送信するための最初のスクリプトです
function getMode(){
/*receives message from port
**communicates with sandboxed.html
*/
chrome.runtime.onConnect.addListener(function(port) {
console.assert(port.name == "mode");
port.onMessage.addListener(function(msg) {
if (msg.newMode){
mode = msg.newMode;
console.log("Mesage received: "+mode);
}
else
console.log("error receiving new mode, last mode was: " + mode);
});
});
}
一度、この関数を呼び出します。
どのようにこれをやろうとしていますか? –
問題を複製する** complete ** [mcve]を含めてトピック上にある質問を編集してください。 * manifest.json *、背景*および*コンテンツスクリプトの一部を含む。デバッグの助けを求める質問(「**なぜこのコードは動作しないのですか?**」)には、以下が含まれていなければなりません:►必要な動作、►特定の問題またはエラー*、および►問題を再現するのに必要な最短コード自体**。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください: "**どのように[mcve] **を作成するか"、[ここで私はどんな話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask] – Makyen
あなたの問題を知るには十分な情報が提供されていませんが、あなたが提供したことは、このクロールが[Chrome拡張機能ポップアップの