1

jetpackを使用した Firefox 拡張機能には、contentScriptが添付されたパネルがあります。パネルは、最初に URL を表示するように設定されています。パネルの場所が (リンクまたは をクリックして) 変更されると、contentScript にメッセージを送信できなくなります (ERR_DESTROYED、「ページが破棄されたため、使用できなくなりました。」が発生します)。document.location=

場所が変更されたときに contentScript を機能させ続ける (または少なくとも再読み込みする) 方法はありますか? または、元のパネルのコンテンツのみを操作して、場所を完全に変更することは避けるべきですか?

動作を示す最小限のスクリプトを次に示します。

exports.main = function (options, callbacks) {
  panel = require("panel").Panel({
    contentURL: "http://stackoverflow.com/",
    contentScript: 'self.port.on("foo", function() { console.log("foo received"); });'
  });

  widget = require("widget").Widget({
    id: "test-panel",
    label: "test panel",
    contentURL: "http://stackoverflow.com/favicon.ico",
    panel: panel
  });

  panel.on("show", function() {
    panel.port.emit("foo");
  });
};
4

1 に答える 1

1

Jetpack google groupMyk Melez から回答を得ました:

現時点では、パネルの場所を変更することは避け、元のパネル コンテンツのみを操作する必要があります。これは、コンテンツ スクリプトを機能させ続ける方法がないためです。しかし、パネルの場所が変更されたときに、パネルのコンテンツ スクリプトが再読み込みされるようにする必要があります。

または、lcamacho が言ったように、パネル内で iframe を使用できます。

于 2011-05-14T13:54:26.100 に答える