J'essaye d'écrire une extension qui ajoute des fonctionnalités aux devtools de Chrome. Selon la documentation de devtools, les pages de devtools supportent des API très limitées. Toute API qui n'est pas prise en charge peut être accédée en accédant à celle-ci via la page d'arrière-plan, comme le fait le contenu des scripts.Impossible d'utiliser getBackgroundPage() api à partir d'une extension devtools
Voici l'extrait de la documentation pertinente:
La propriété Tabid fournit l'identifiant de l'onglet que vous pouvez utiliser avec les chrome.tabs * appels API.. Toutefois, notez que l'API chrome.tabs. * N'est pas exposée aux pages d'extension Developer Tools pour des raisons de sécurité. Vous devrez transmettre l'ID d'onglet à la page d'arrière-plan et appeler les fonctions API chrome.tabs. * À partir de là.
Voici l'URL source: http://developer.chrome.com/extensions/devtools.inspectedWindow.html
Cependant, lorsque je tente de le faire, je reçois l'erreur suivante dans la console:
uncaught Error: "getBackgroundPage" can only be used in extension processes. See the content scripts documentation for more details.
Voici mon code dans mes devtools. js script:
chrome.extension.getBackgroundPage().getLocation();
Qu'est-ce que je fais mal?
EDIT
je décrire d'abord mon scénario, et montrer comment je suis mise en œuvre.
Ce que je veux faire est d'afficher des données supplémentaires dans un panneau devtools lié à une page Web. Pour obtenir ces données, je devrai envoyer une requête HTTP dans la même session que la page en cours de débogage, car elle nécessite une authentification.
Cas d'utilisation:
utilisateur accède à une URL particulière. Il est authentifié sur le site. Il invoque ensuite devtools. Le panneau devtools s'ouvre et un nouveau panneau affiche des données supplémentaires liées à la page.
Mise en œuvre:
1) Script DevTools trouve l'URL de la page en cours d'inspection. Si l'URL correspond au nom d'hôte de base du site, elle ouvre un panneau. Dans le rappel de la création du panneau, il envoie un message à une page d'arrière-plan, lui demandant de télécharger une charge JSON depuis un point de débogage sur le même site, puis l'envoie à l'extension devtools, qui l'affiche ensuite.
Problèmes:
1) La page d'arrière-plan reçoit la demande, et télécharge l'URL. Cependant, le téléchargement n'utilise pas la même session que l'utilisateur, la demande de téléchargement échoue donc.
2) Depuis la fenêtre devtools, j'ai le tabId de la fenêtre inspectée. J'envoie ce tabId à la page d'arrière-plan afin qu'il puisse analyser certaines choses hors de l'url. Toutefois, chrome.tabs.get (tabId) ne renvoie pas l'onglet.
Pour résumer, je dois
1) Obtenez la page d'arrière-plan pour télécharger des données dans la même session que l'onglet de l'utilisateur qui est en cours de débogage. 2) J'ai besoin que la page d'arrière-plan puisse accéder à l'onglet de l'utilisateur.
J'ai mis à jour ma réponse pour vos 2 modifications, faites-moi savoir votre point de vue – Sudarshan