2017-05-29 1 views
2

J'ai un problème de communication basé sur browser.runtime.connect entre un script de contenu et un script d'arrière-plan de mon extension d'écho de test. J'ai publié mon code et mon extension sur github.Communication entre le script de contenu et le script d'arrière-plan dans Microsoft Edge

Brève description de cette extension. Vous pouvez exécuter l'extension sur this GitHub test page. Le script de contenu se connecte au script d'arrière-plan en utilisant browser.runtime.connect et envoie un message via l'objet browser.runtime.Port lorsque vous cliquez sur le bouton "Soumettre". Le script d'arrière-plan reçoit le message, le convertit en majuscules et le renvoie. Ensuite, le script de contenu reçoit le message modifié et l'affiche sur la page (reçu le champ de message).

Cette extension fonctionne correctement lorsque je l'ajoute à Edge à l'aide de Charger le bouton d'extension comme décrit dans la documentation de Microsoft Edge. Donc, si vous ouvrez la page de test avec l'extension chargée, vous devriez voir "HELLO from BACKGROUND SCRIPT" texte dans le champ reçu .

Mais il y a un problème étrange si cette extension est installée à partir d'un package ... L'extension ne fonctionne pas jusqu'à ce que j'ouvre la page d'arrière-plan de cette extension et recharger la page de test ... Vous pouvez donc essayer de reproduire:

  1. installer cette extension du package
  2. Ouvrir la page de test. Le script d'arrière-plan ne fonctionne pas correctement (le champ de message reçu est vide) et ce script ne reçoit pas les messages envoyés ... Le rechargement de page ou la désactivation de l'extension n'aide pas.
  3. Ouvrir page d'arrière-plan de cette extension. Alors cette page peut être fermée.
  4. Recharger la page de test
  5. Extension commence à fonctionner correctement ...

Remarque: cette extension de test est basé sur la runtime.connect exemple publié sur MDN (désolé, mais je peux ne pas insérer plus de deux liens ...).

Pourriez-vous m'aider à résoudre ce problème? Peut-être que j'ai manqué quelque chose dans la documentation ...

+0

J'ai également rencontré ce problème, pour les paquets appx, la page d'arrière-plan ne se charge pas tant que vous ne l'avez pas inspectée manuellement. Il est encouragé à soulever un bug ici https://developer.microsoft.com/fr-fr/microsoft-edge/platform/issues/ –

+0

@HaibaraAi merci pour votre commentaire. Maintenant, je sais que d'autres développeurs ont le même problème. J'ai soulevé le bug il y a quatre jours https://developer.microsoft.com/fr-fr/microsoft-edge/platform/issues/12156180/Mais je n'ai toujours pas reçu de réponse ... Il semble que ce processus ne soit pas rapide. Pourriez-vous marquer ce bug comme reproductible? Je veux dire, pourriez-vous pousser ** Moi aussi ** bouton? Peut-être que cela aidera à accélérer le traitement de ce rapport de bug ... –

+0

Merci d'avoir soulevé le bug! J'ai upvoted que:) –

Répondre

1

Ceci est dû au fait que votre manifeste d'extension a spécifié un drapeau persistant comme faux. Sur Microsoft Edge, le comportement par défaut du script d'arrière-plan est non persistant.

+0

Merci pour la réponse! J'ai défini la valeur de propriété persistante sur true, de sorte que l'extension fonctionne correctement même si elle est installée à partir d'un package. Mais encore ... quelle est la bonne façon de charger une page d'arrière-plan non-persistant? Par exemple, sur Google Chrome, cette page sera chargée une fois pour chaque nouvelle version de votre extension. Après cela, il ne sera chargé que pour la livraison des événements pour lesquels vous vous êtes inscrit ([la documentation] (https://developer.chrome.com/extensions/event_pages)). –