1

私は現在、Firefox アドオン SDK を使用して Firefox 拡張機能を作成しています。コンテンツ スクリプト (ページ mod) とポップアップ (パネル) の間で通信しようとしましたが、うまくいきませんでした。

Erik Vold のツールバー ボタンを使用しています。これが私のコードです:

var tbb = require('toolbarbutton').ToolbarButton({
    id: 'from-us_button',
    label: 'from-us',
    image: data.url('img/on.png'),
    panel: panel

});

var pageMod = require('page-mod').PageMod({
  include: "*",
  contentScriptFile: [
    data.url('recuperation.js')
    ],
  contentScriptWhen : "end",
  attachTo: ["existing", "top"]

});


var panel = require('panel').Panel({
    width: 200,
    height: 500,
    contentURL: data.url('popup.html')

});

私の popup.html には以下が含まれます:

<script type="text/javascript" src="popup.js"></script>

recuperation.js から popup.js に変数を渡したいのですが、どうすればよいですか?

4

2 に答える 2

2

popup.js には、メッセージを main.js に送り返すことができる「アドオン」グローバル オブジェクトが必要です。これはここに文書化されています:

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/panel.html#Styling%20Trusted%20Panel%20Content

于 2013-06-04T19:38:34.277 に答える
1

popup.jsをパネルにアタッチする必要があります。

var panel = require('panel').Panel({
    ...
    contentURL: data.url('popup.html'),
    contentScriptFile:  require("self").data.url("popup.js")  //or data.url() if you already have it set
});

タグを介してロードされたスクリプト<script>には、使用に必要な権限がありませんself.port

次に、リスナーを page-mod に追加し、worker次のようにメッセージをパネルに中継します。

var panel = ...
...
require('page-mod').PageMod({
  include: "*",
  contentScriptFile: [
    data.url('recuperation.js')
  ],
  contentScriptWhen : "end",
  attachTo: ["existing", "top"],
  onAttach: function(worker){
    worker.port.on("recuperation-to-panel",function(msg){
        panel.port.emit("recuperation-to-panel",msg);
    });    
  }
});

次にrecuperation.jsから:

self.port.emit("recuperation-to-panel",msg);

*編集:そうあるべきworker.port.onです; 違いpageMod.port.onます。ごめん。

于 2013-06-04T19:50:33.117 に答える