-1

Chrome拡張機能を作成していて、バックグラウンドページとコンテンツページの間でメッセージを送信しようとしています。

問題は、接続が確立されないことです。私はグーグルのドキュメントからコードをコピーしたが、役に立たなかった。

これが私のマニフェストページです

{
  "name": "x",
  "description": "x",
  "version": "0.1",
  "permissions": ["contextMenus", "tabs", "notifications"],
   "content_scripts": [
    {
      "matches": ["http://*/*","https://*/*"],
      "js": ["jquery.js", "content_script.js"]
    }
  ],
  "background": {
    "scripts": ["sample.js"]
  },
  "manifest_version": 2
}

私のバックグラウンドページ

function genericOnClick(info, tab) 
{
       //copy pasted from google tutorials. My own code also didn't work
       chrome.tabs.getSelected(null, function(tab) {
  chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(response) {
    console.log(response.farewell);
  });
});


}



// Create a parent item and two children.
var parent1 = chrome.contextMenus.create({"title": "Rank Trigger", "contexts":["all"]});

var child1 = chrome.contextMenus.create
(
    {"title": "Rank 1", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick}
);
var child2 = chrome.contextMenus.create
(
    {"title": "Rank 2", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick}
);
var child2 = chrome.contextMenus.create
(
    {"title": "Rank 3", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick}
);

コンテンツスクリプト:

//copied from google tutorials
chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
    console.log(sender.tab ?
                "from a content script:" + sender.tab.url :
                "from the extension");
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
  });

何かアイデアはありますか?たぶん、イベントはコンテキストメニューからトリガーされますが、よくわかりません。私はJSとChrome拡張機能のプログラミングに不慣れです。

ありがとう

4

2 に答える 2

1

onclick要素にハンドラーを設定してevent.currentTarget.outerHTMLから、クリックした要素のHTMLを取得するために使用します。

于 2013-02-12T16:05:15.810 に答える
0

私のコードは期待どおりに機能しており、メッセージは実際に各onClickに送信されたことがわかりました。問題は、contentScriptが挿入されていない間違ったページでテストしていたことです。

私の側のばかげた間違い...助けてくれてありがとう

于 2013-02-14T10:59:22.497 に答える