IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment controler si mon api est déja chargé


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut Comment controler si mon api est déja chargé
    Bonjour à tous,

    J'inclus l'api de google map de cette manière

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var script = document.createElement("script");
    		script.src = "http://maps.google.com/maps/api/js?v=3.7&sensor=true&callback=googleMapsReady";
    		script.type = "text/javascript";
    		document.getElementsByTagName("head")[0].appendChild(script);
     
    		script.addEventListener("error", function(e) {
        		googleMapsState = "error";
    			console.log('Googlemap Api loading error');
    		}, false);

    Simplement, dans certain cas, je dois la charger si elle ne l'a pas été.

    Comment puis-je controler si le script ci-dessus à déjà été chargé ou pas, et le charger et conséquence. En d'autre de mots, de savoir s'il est se trouve deja dans la balise <script> pour ne pas avoir ce message d'erreur
    Warning: you have included the Google Maps API multiple times on this page. This may cause unexpected errors.
    Aussi, si je perts la connection, y a il un moyen pour qu'il soit "effacer" ou commenter?

    Milles mercis

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Tu peux identifier la balise à l'aide de l'attribut id...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function loadAPI(){
    	if(document.getElementById('monAPI'))return; // Retour si l'ID est trouvé
     
    	var script = document.createElement("script");
    	script.src = "http://maps.google.com/maps/api/js?v=3.7&sensor=true&callback=googleMapsReady";
    	script.type = "text/javascript";
     
    	script.id = 'monAPI'; // Identifie la balise
     
    	document.getElementsByTagName("head")[0].appendChild(script);
     
    	script.addEventListener(
    		"error",
    		function(e) {
    			script.id = ''; // Supprime l'identifiant
    			googleMapsState = "error";
    			console.log('Googlemap Api loading error');
    		}, false
    	);
    }

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Ha ben oui,

    J'ai donc corrigé comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    if($('#googleAPI').length == 0){
     
    			this.googleMapsState = "loading";
     
    			var script = document.createElement("script");
    			script.src = "http://maps.google.com/maps/api/js?v=3.7&sensor=true&callback=googleMapsReady";
    			script.type = "text/javascript";
    			script.id = 'googleAPI';
    			document.getElementsByTagName("head")[0].appendChild(script);
     
    			script.addEventListener("error", function(e) {
    				googleMapsState = "error";
    				console.log('Googlemap Api loading error');
    			}, false);
    		}
    Es-ce que je pourrais faire mieux?

    Merci

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    On peux aussi tester l'existence de l'objet (je n'en connais pas le nom) de l'application en mémoire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(typeof NOM_OBJET=='undefined') // Chargement du script

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    ok merci,

    je pense alors que ca serait mieux d'utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(typeof $('#googleAPI')=='undefined') // Chargement du script
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($('#googleAPI').length == 0){
    ?

    merci pour tes réponses...

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    pourquoi ne pas faire simplement, un peu comme te la suggéré Eric2a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( !window.google){
      // chargement du script
    }
    Citation Envoyé par pierrot10
    Simplement, dans certain cas, je dois la charger si elle ne l'a pas été.
    je dois admettre que je ne saisi pas comment cela se peut!

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Citation Envoyé par Eric2a Voir le message
    On peux aussi tester l'existence de l'objet (je n'en connais pas le nom) de l'application en mémoire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(typeof NOM_OBJET=='undefined') // Chargement du script
    Il y a une forme à la fois plus efficace et plus claire, ce serait dommage de s'en priver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (NOM_OBJET === undefined) // Chargement du script
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. [umount]Comment controler que mon montage n'est pas busy
    Par pierrot10 dans le forum Réseau
    Réponses: 4
    Dernier message: 03/02/2011, 18h03
  2. Réponses: 2
    Dernier message: 05/05/2008, 12h32
  3. Réponses: 2
    Dernier message: 03/11/2006, 10h36
  4. Comment savoir si mon navigateur est ouvert ?
    Par Chris33 dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 18/07/2006, 14h51
  5. [CF][C#]Comment déterminer si mon PPC est bien connecté?
    Par royrremi dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 07/03/2006, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo