GAPI n'Est Pas Défini
Je vais avoir beaucoup de mal à obtenir de la Google api javascript à charger dans mon extension chrome. Veuillez noter que je suis très nouveau à javascript et même les plus récents pour les extensions de chrome.
J'ai un background.js fichier qui exécute un script
chrome.tabs.executeScript(null, { file: "ChromeExtension.js" });
Ce ChromeExtension.js fichier ensuite comme suit
//Call Initialize Method
init();
//Function To Initial Chrome Extension
function init(){
var clientID = 'Client ID';
var apiKey = 'API Key';
var scopes = 'https://www.googleapis.com/auth/plus.me';
loadGAPIClient();
gapi.client.setApiKey(apiKey);
}
Mon problème est que à
gapi.client.setApiKey(apiKey);
- Je obtenir gapi n'est pas défini La chose est, une fois mon ChromeExtension.js a terminé son exécution, gapi est entièrement défini et disponible.
J'ai essayé d'autres suggestions dans certains débordement de pile questions mais en vain. Je crois que c'est dû à l'absence de Javascript connaissance, mais je vous serais reconnaissant si quelqu'un serait en mesure de fournir une assistance.
Je vous remercie pour votre temps.
MODIFIER Courant GAPI Charge
function () loadGAPIClient(){
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "https://apis.google.com/js/client.js";
$("head").append(s);
}
Cette fonction est appelée dans mon init(), que j'ai également mis à jour pour refléter ce changement.
J'ai aussi essayé à l'aide de jQuery.getScript parmi d'autres façons.
S'il vous plaît comprendre c'est mon problème, je ne peux pas trouver un moyen de charger correctement le GAPI Client
Salut Abraham, j'ai mis à jour la question. J'ai aussi espérons-le, clarifié la question que je suis en train de vivre.
OriginalL'auteur Keith | 2015-04-03
Vous devez vous connecter pour publier un commentaire.
Isolé du monde problème.
Plus précisément, vos
loadGAPIClient
ajoute un<script>
balise qui exécute le script dans la page du contexte, ce qui est différent à partir du contenu du contexte de script.Le résultat final est que
gapi
devient définies dans la page de code (éventuellement la création d'un conflit si la page est chargée propre copie), mais est toujours pas défini dans le vôtre.Je ne vois pas une voie facile. Vous pouvez uniquement charger des choses dans le contenu du contexte de script en appelant
executeScript
ou les déclarant dans le manifeste; et si je me souviens bien GAPI essaie de charger des bibliothèques avec le<script>
méthode d'injection.Donc je suppose que votre meilleur pari est de charger la bibliothèque dans une page d'arrière-plan et de travailler avec elle à partir de là, depuis le chargement de JS externe de cette façon sera ok aussi longtemps que vous modifier la CSP.
Ou sinon, vous pouvez essayer de cette bibliothèque, qui fonctionne sur les problèmes que vous avez avec le CSP par défaut et utilise
chrome.identity
API. Il peut s'adapter à vos besoins, mais encore une fois il ne fonctionnera pas dans un contenu de script.J'ai essayé la bibliothèque et je voulais souligner que lors de l'utilisation dans le fond de script, vous devez modifier un peu le code: SUPPRIMER ces lignes, car en arrière-plan de la page
chrome.app.runtime
est en faitundefined
. Après cela, il fonctionne comme un charme!!!OriginalL'auteur Xan
Ne représente pas une menace ma réponse comme offensant, dans votre extrait de code il n'y a pas de preuve de cela, vous devez charger l'Api Google bibliothèque JavaScript comme montrer sur la référence?
Vous avez besoin pour utiliser cette méthode, ne pas appeler init par la main: nous allons gapi appel à vous 🙂
Je n'aurais pas vers le bas vous ont voté mais Xan est correct.
M'a aidé dans mon contexte, grâce collègues devs! vive l'informatique!
Waouh! @ElonZito amusez-vous sur télégramme.me/thecodinglove 🙂
OriginalL'auteur aqquadro