0

Tout ce que je trouve semble impliquer l'injection de jQuery, mais je sais que jQuery existe déjà sur la page (la console JS du navigateur me permet de l'utiliser).Utilisez jQuery existant dans le script de contenu d'extension Chrome?

J'ai un script d'arrière-plan qui envoie un message à mon script de contenu, qui exécute la fonction. Lorsque cette fonction exécute je reçois:

Error in event handler for runtime.onMessage: ReferenceError: jQuery is not defined

(j'ai essayé deux références $ et jQuery)

Toutes les idées pour lesquelles je ne peux pas accéder à l'objet jquery existant à partir du script de contenu?

+0

Si vous injecter du code dans la page Web, votre code doit attendre sur jquery init, alors cela devrait fonctionner. Mais si vous essayez d'utiliser jquery à partir d'une page de votre code d'extension, cela ne fonctionnera pas car chrome ne partage pas les scripts de page Web avec votre extension. – SEUH

+0

Copie possible de [Comment utiliser jQuery dans l'extension chrome?] (Http://stackoverflow.com/questions/21317476/how-to-use-jquery-in-chrome-extension) –

+0

@ZigMandel En désaccord avec le doublon. – Xan

Répondre

2

C'est parce que les scripts de contenu par la conception ne sont pas autorisés à accéder aux variables/fonctions définies par la page

https://developer.chrome.com/extensions/content_scripts

However, content scripts have some limitations. They cannot:

  • Use chrome.* APIs, with the exception of:
    • extension (getURL , inIncognitoContext , lastError , onRequest , sendRequest)
    • i18n
    • runtime (connect , getManifest , getURL , id , onConnect , onMessage , sendMessage)
    • storage
  • Use variables or functions defined by their extension's pages
  • Use variables or functions defined by web pages or by other content scripts

Donc, si vous souhaitez utiliser une certaine bibliothèque votre extension doit injecter

+0

Hmm merci, c'est utile. J'ai ajouté une jquery locale aux content_scripts dans le manifeste, et maintenant je peux ajouter un div au document dom sur ready, mais quand je clique sur un bouton de mon popup d'extension qui envoie un message pour exécuter une fonction dans ce même script de contenu, se plaint encore de jquery et $ n'existent pas. Est-ce lié d'une manière ou d'une autre aux derniers points? Même s'il s'agit d'un script de contenu, puisqu'il provient d'un message de l'arrière-plan JS ... il manque un contexte? – Kaitlyn2004

+0

@Kaitlyn Difficile de dire de votre explication; à ce stade, une nouvelle question est probablement meilleure. – Xan