1

何千回もここに来ていることは知っていますが、今は立ち往生しています。たくさんの回答を読み、code.google.com を調べましたが、成功しませんでした。background.htmlからにchrome 拡張機能でリクエストを送信しようとしていますcontentscript.js。私はそれを他の方法で動作させることができました。

内部のコードbackground.html:

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

内部のコードcontentscript.js:

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

通信が逆方向に機能しており、他のmanifest.jsonすべてが正常に機能しているため、問題はありません。ありがとうございました!

4

1 に答える 1

0

あなたのコードは良いです。トリガーに何か問題があるはずです。あなたのコードを使用して簡単な拡張機能を作成しましたが、うまくいきました。これらの 2 つのビットを背景とコンテンツ スクリプトに追加します。次に、任意のページで右クリックして [メッセージを送信] を選択します。アラートを受信する必要があります。

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

コンテンツスクリプト

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.greeting == "hello") {
            alert('hello');
      sendResponse({farewell: "goodbye"});
        }
    else
        {
            alert('goodbye');
      sendResponse({farewell: "nope"});
        }
});
于 2012-01-14T01:05:03.607 に答える