Как сохранить работоспособность ContentScript, когда его панель Jetpack меняет местоположение - PullRequest
1 голос
/ 14 мая 2011

В расширении Firefox, использующем jetpack , у меня есть панель с прикрепленным contentScript . Панель настроена на первоначальное отображение URL. Если панель меняет свое местоположение (с помощью щелчка по ссылке или document.location=), я больше не могу отправлять сообщения на contentScript (возникает ошибка ERR_DESTROYED «Страница была уничтожена и больше не может использоваться»). ).

Есть ли способ сохранить мой 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");
  });
};

1 Ответ

1 голос
/ 14 мая 2011

Получил ответ от Myk Melez в группе Google Jetpack :

Пока что вам следует избегать изменения расположение панели и только манипулировать оригинальное содержание панели, так как нет способа сохранить контент скрипты работают. Но мы должны возможно сделать содержание панели скрипты перезагружаются, когда его местоположение меняется.

Или, как сказал Икамачо , я могу использовать iframe внутри панели.

...