Question

Dans une extension Firefox en utilisant jetpack, J'ai un panneau avec un contenu ci-joint. Le panneau est défini pour afficher initialement une URL. Si le panneau modifie son emplacement (via un clic sur un lien ou un document.location=), Je ne peux plus émettre de messages au contente (il augmente un err_destroyed, "La page a été détruite et ne peut plus être utilisée.").

Existe-t-il un moyen de faire fonctionner mon contenu (ou du moins de le recharger) lorsque l'emplacement change? Ou dois-je éviter de changer l'emplacement totalement un seul manipuler le contenu du panneau d'origine?

Voici un script minimal montrant le comportement:

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");
  });
};
Était-ce utile?

La solution

J'ai un Réponse de Myk Melez sur le Groupe google jetpack:

Pour l'instant, vous devez éviter de modifier l'emplacement du panneau et ne manipuler que le contenu du panneau d'origine, car il n'y a pas de moyen de faire fonctionner les scripts de contenu. Mais nous devrions probablement faire en sorte que les scripts de contenu du panneau soient rechargés lorsque son emplacement change.

Ou, comme Lcamacho a dit, Je peux utiliser un iframe à l'intérieur du panneau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top