2016-05-05 13 views
0

私は拡張機能の一部から別の部分に値を取得する必要があるChrome拡張機能に取り組んでいます。私は、拡張子アイコンがクリックされたとき両方のスクリプトを実行するバックグラウンドスクリプトを持っています。 1つのコンテンツスクリプトは、Webページから値を取得し、それを外部スクリプトに送信する必要があります。拡張アイコンがクリックされると、メッセージを聞く外部スクリプトが実行されます。あるコンテンツスクリプトから別のコンテンツスクリプトへのメッセージの受け渡し

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

コンテンツスクリプトでは、Webページのボタンをクリックすると、外部スクリプトにメッセージを送信する必要があります。コンテンツスクリプトのコードは次のとおりです。

chrome.runtime.sendMessage({token: token, URL: URL},function(response) { 
    console.log("Greeting 1"); 
    console.log(response.greeting);                                            
    });  

私は外部のスクリプトからプリントアウトし、私はコンテンツスクリプトからプリントアウト「1あいさつ」を取得「聞く」GETプログラムを実行します。しかし、外部スクリプトでは、リスナーは動作していないようです。私はそれをブレークポイントしてプロセスをステップすることができますが、リスナー内のブロックをスキップして終了し、関数の最後には何もしません。誰かが私が間違っているかもしれないものを見ることができますか?

+0

'message'関数はどこで実行されていますか?バックグラウンドページで?ポップアップページで? – apsillers

答えて

0

少し混乱しているようですね。このコードを試してください

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

あなたのbackground.jsでこのメッセージを聞いてください。

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

警告メッセージが表示されます。この場合 "SomeMessage"。

+0

ありがとうございます。私はこの問題を時代遅れにする別の問題を修正しました。 – Jared

関連する問題