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

IGN API Géoportail Discussion :

Erreur JQuery et nouvelle version 1.0


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Erreur JQuery et nouvelle version 1.0
    Bonjour,

    Depuis la récente version 1.0, Firebug reporte le problème suivant : elem.body is null au chargement de mon appli web.

    L'API est chargée de même que GeoportalExtended.js mais l'exécution s'arrête à la première option (container), donc pas d'affichage de carte.

    La ligne concernée dans JQuery 1.4.2 est soulignée dans le fragment de JQuery suivant :

    return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
    // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
    elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
    elem.document.body[ "client" + name ] :

    // Get document width or height
    (elem.nodeType === 9) ? // is it a document
    // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
    Math.max(
    elem.documentElement["client" + name],
    elem.body["scroll" + name], elem.documentElement["scroll" + name],
    elem.body["offset" + name], elem.documentElement["offset" + name]
    ) :

    // Get or set width or height on the element
    size === undefined ?
    // Get width or height on the element
    jQuery.css( elem, type ) :

    // Set the width or height on the element (default to pixels if value is unitless)
    this.css( type, typeof size === "string" ? size : size + "px" );
    Une erreur similaire survient avec la version de JQuery 1.3.2.

    Le déboggeur de Chrome renvoie l'erreur suivante à la même ligne de JQuery : Uncaught TypeError: Cannot read property 'scrollHeight' of null

    L'erreur ne semble pas survenir avec la version Geoportal.js.

    Il serait opportun que les changements de code fassent l'objet de versions spécifiques afin d'offrir au développeur un peu de stabilité.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 130
    Points : 1 765
    Points
    1 765
    Par défaut Stabilité des versions
    Je pense qu'il faut mieux avoir la version de l'API en local pour s'affranchir des changements de versions du site Geoportail.
    Tant que les sources de données (cartes/photos/...) restent avec le même protocole (wms-c/...) et que la gestion de la clé reste identique, l'application continue de fonctionner.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Je pense qu'il faut mieux avoir la version de l'API en local pour s'affranchir des changements de versions du site Geoportail.
    Tant que les sources de données (cartes/photos/...) restent avec le même protocole (wms-c/...) et que la gestion de la clé reste identique, l'application continue de fonctionner.
    La même erreur apparaît en local avec la source 1.0 Geoportail-API-1.0-src.zip actuellement proposée. Comme elle n'est pas taggée avec une date, impossible de savoir si c'est la version initiale de mars ou la nouvelle.

    Pour contourner le problème temporairement, j'ai rapatrié localement JQuery et commenté les 2 parties incriminées :

    return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
    // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
    elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
    elem.document.body[ "client" + name ] :

    // Get document width or height
    (elem.nodeType === 9) ? // is it a document
    // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
    Math.max(
    elem.documentElement["client" + name],
    /* elem.body["scroll" + name],*/ elem.documentElement["scroll" + name],
    /* elem.body["offset" + name],*/ elem.documentElement["offset" + name]
    ) :

    // Get or set width or height on the element
    size === undefined ?
    // Get width or height on the element
    jQuery.css( elem, type ) :

    // Set the width or height on the element (default to pixels if value is unitless)
    this.css( type, typeof size === "string" ? size : size + "px" );
    C'est un peu plus long à charger maintenant, mais au moins la carte apparaît.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 130
    Points : 1 765
    Points
    1 765
    Par défaut
    Les sources (https://api.ign.fr/geoportail/api/do...PI-1.0-src.zip) sont ceux de la version actuelle.
    Un passage dans un 'packer' permet de gagner en temps de télé-chargement.

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Ce qui serait vraiment sympa serait d'avoir un code montrant comment tu utilises jQuery avec l'API.

    Le seul vrai changement entre la version 1.0bêta5 que j'envoyais au forum et la version 1.0 est la façon dont l'API est chargée (via api?) ... et là, il est possible qu'il y ait un conflit entre les API.

    Pour les changements de versions, je rejouterai la date de publication dans l'API.
    Je conseille très largement (comme l'indique mga_geo) de développer :

    * avec une version locale de l'API;
    * de tester avec les différentes corrections de production en ne montant que les versions qui permettent à l'application de continuer à fonctionner.

    Pour les versions API qui ne fonctionnent pas ou plus, la bonne pratique est :
    * toujours récupérer le code source complet lors d'une publication;
    * le déployer en local sans fusion/compression des javascripts;
    * partager les erreurs sur le forum.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Les sources (https://api.ign.fr/geoportail/api/do...PI-1.0-src.zip) sont ceux de la version actuelle.
    J'avais deviné.

    Citation Envoyé par mga_geo Voir le message
    Un passage dans un 'packer' permet de gagner en temps de télé-chargement.
    J'ai "re-minifié" le JQuery modifié mais je suis obligé de le charger depuis mon propre serveur maintenant (de googleapis avant). Je n'utilise pas les versions 'packers' (trop de problèmes).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Ce qui serait vraiment sympa serait d'avoir un code montrant comment tu utilises jQuery avec l'API.
    J'utilise JQuery pour la gestion de l'interface principalement, rien de bien transcendant.


    Citation Envoyé par dgrichard Voir le message
    Le seul vrai changement entre la version 1.0bêta5 que j'envoyais au forum et la version 1.0 est la façon dont l'API est chargée (via api?) ... et là, il est possible qu'il y ait un conflit entre les API.
    Je n'ai pas testé la 1.0bêta5, j'ai tout re-codé de la bêta4 à la v1.0 de mars. Fin mars tout fonctionne correctement, je passe à autre chose. Le 15 avril je teste l'appli, ayant eu de nouvelles idées, et là erreur de JQuery. Donc le problème est survenu entre la version 1.0 de mars et la 1.0 actuelle. Maintenant il est aussi fort possible que ce soit un faux positif : j'ai conservé une version de mon appli datée du 3 mars qui passe sans problème. Je suis en train de réduire le code pour trouver le coupable mais c'est long (2000 lignes truffées de php).


    Citation Envoyé par dgrichard Voir le message
    Pour les changements de versions, je rejouterai la date de publication dans l'API.
    C'est apprécié, merci. De même que les conseils.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Bonne nouvelle, après 3 minutes de deboggage intensif (!) l'erreur a disparu : le même code inchangé ne renvoie plus l'erreur. Incompréhensible mais inespéré. Jamais déboggé si vite...

  9. #9
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par tmtisfree Voir le message
    Maintenant il est aussi fort possible que ce soit un faux positif : j'ai conservé une version de mon appli datée du 3 mars qui passe sans problème.
    3 mars, c'était encore la 1.0bêta4 ...

    D'ailleurs, tu peux faire le test suivant en mettant v=1.0beta4 au lieu de 1.0, tu auras la version juste avant la bascule en 1.0

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    3 mars, c'était encore la 1.0bêta4 ...
    ...qui passe sans problème... sur la 1.0.

    Citation Envoyé par dgrichard Voir le message
    D'ailleurs, tu peux faire le test suivant en mettant v=1.0beta4 au lieu de 1.0, tu auras la version juste avant la bascule en 1.0
    Je confirme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déclarer une nouvelle version de Tomcat
    Par keopsk dans le forum JBuilder
    Réponses: 9
    Dernier message: 02/07/2004, 23h28
  2. Réponses: 1
    Dernier message: 06/04/2004, 12h01
  3. Nouvelle version de MySql
    Par syannic dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 17/03/2003, 18h39

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