0

次のアクションを実行するChrome拡張機能があります。

chrome.extension.sendRequest({action: "store", working_tab: tab.id, 
                              store_text: text});

それに対応して、リスナーは次のとおりです。

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.action == "store") {
     storeObject.process();
     sendResponse({});
   }
}

Firefox 拡張機能に対応するコードを教えてください。Firefox 拡張機能のチュートリアルに従いましたが、あまり役に立ちませんでした。

コード スニペットを投稿していただければ、この作業を開始できます。

これを行う理由: この Chrome 拡張機能を Firefox に移植しようとしています。

4

1 に答える 1

4

FirefoxアドオンSDKと同等のコードは、次のようなものになります。

main.jsスクリプトでは、コンテンツスクリプトをページに挿入し、メッセージを送信するpage-modオブジェクトが作成されます。

// main add-on script
pageMod.PageMod({
  include: "*.org",
  contentScriptFile: self.data.url("my-script.js"),
  // Send the content script a message inside onAttach
  onAttach: function(worker) {
    worker.port.emit("replacePage", "Page matches ruleset");
  }
});

コンテンツスクリプトでは、イベントが受信されます。

// content script
self.port.on("replacePage", function(message) {
  document.body.innerHTML = "<h1>" + message + "</h1>";
});

実用的な例はここにあります:

https://builder.addons.mozilla.org/addon/1053578/latest/

上記の例はアドオンからページへの通信のみを示していますが、その逆も可能であることに注意してください。同じ基本的な送信パターンを使用して、コンテンツスクリプトからアドオンにメッセージを送信できます。ワーカーからコンテンツスクリプトへのメッセージと、その逆のメッセージ。コンテンツスクリプト通信の仕組みの詳細については、以下をご覧ください。

https://addons.mozilla.org/en-US/developers/docs/sdk/1.7/dev-guide/guides/content-scripts/index.html

于 2012-06-20T00:49:51.257 に答える