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

} 

一度、この関数を呼び出します。

+0

どのようにこれをやろうとしていますか? –

+0

問題を複製する** complete ** [mcve]を含めてトピック上にある質問を編集してください。 * manifest.json *、背景*および*コンテンツスクリプトの一部を含む。デバッグの助けを求める質問(「**なぜこのコードは動作しないのですか?**」)には、以下が含まれていなければなりません:►必要な動作、►特定の問題またはエラー*、および►問題を再現するのに必要な最短コード自体**。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください: "**どのように[mcve] **を作成するか"、[ここで私はどんな話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask] – Makyen

+0

あなたの問題を知るには十分な情報が提供されていませんが、あなたが提供したことは、このクロールが[Chrome拡張機能ポップアップの

関連する問題