2012-01-13 11 views
1

私はそれが何千回もあったと知っていますが、今は固執しています。私は多くの答えを読んで、code.google.comを勉強しましたが成功しませんでした。クローム拡張機能のリクエストをbackground.htmlからcontentscript.jsに送信しようとしています。私はそれを他の方法で動作させることができた。 background.html内部メッセージの受け渡しに時間がかかっていますbackground.html >> contentscript.js(クロム拡張子)

コード:contentscript.js内部

chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
     console.log(response.farewell); 
    }); 
    }); 

コード:通信が後方働いていると、何かが正常に動作するよう

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") 
     sendResponse({farewell: "goodbye"}); 
    else 
     sendResponse({farewell: "nope"}); 
}); 

manifest.jsonは問題ないはずです。ありがとうございました!

+0

contentscriptで受信したメッセージですか? –

+0

いいえ、 'alert(" Hey ");'関数(request、sender、sendResponse){} 'を追加しても何も起こりません。 –

答えて

0

あなたのコードは良いです、あなたのトリガーに間違っている必要があります。私はあなたのコードを使って簡単な拡張を作成し、それは働いた。これらの2つのビットをバックグラウンドとcontentscriptに追加します。次に、任意のページでrmbを選択し、[メッセージを送信]を選択します。アラートを受け取る必要があります。

Background.html

var menuid = chrome.contextMenus.create({"title":"Send Message", "onclick": SendMessage, "documentUrlPatterns":["http://*/*"]}); 

function SendMessage() {   
    chrome.tabs.getSelected(null, function(tab) { 
      chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
       console.log(response.farewell); 
      }); 
    }); 
} 

contentscript

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") { 
      alert('hello'); 
     sendResponse({farewell: "goodbye"}); 
     } 
    else 
     { 
      alert('goodbye'); 
     sendResponse({farewell: "nope"}); 
     } 
}); 
+0

ありがとう、これは動作します。しかし、まだ他の方法がなぜそうしないのか分からない。私はよく動作するアクションブラウザonclickedイベントを使用しました。 –