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 :

[AJAX] [MSIE][DOM] MAJ de l'affichage


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut [AJAX] [MSIE][DOM] MAJ de l'affichage
    Bonjour.

    Je suis confronté à un problème étrange sous internet explorer, que je ne rencontre pas sous *gecko* :
    Lors de la mise à jour de mes pages en AJAX, le modifie le contenu d'une <DIV>. Jusque là, rien de bien spécial. Le DIV (mainContent) contenant la structure principale du contenu de la page, le charge donc une série de modules qui sont récupérés eux aussi par AJAX. Et c'est là que tout se corse...
    Ma page de base
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
     <head>
      <!-- appel des différents scripts -->
      <script src="...js"></script>
     </head>
     <body>
      <div id="header">...</div>
      <div id="mainContent"></div>
     </body>
    </html>

    Ma page une fois le premier appel passé :
    Code html : 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
    21
     
    <html>
     <head>
      <!-- appel des différents scripts -->
      <script src="...js"></script>
     </head>
     <body>
      <div id="header">...</div>
      <div id="mainContent">
       <table id="layoutContainer">
        <tr><ts id="fullTop" colspan="3"></td></tr>
        <tr>
         <td id="leftColumn"></td>
         <td id="centerColumn"></td>
         <td id="rightColumn"></td>
        </tr>
        <tr><ts id="fullBottom" colspan="3"></td></tr>
       </table>
      </div>
     </body>
    </html>
    Je sais que les tableaux c'est pas bô mais, là, j'ai pas trop le choix à cause d'éléments que j'utilise à côté.
    Une fois que j'ai ce tableau, je charge, toujours avec AJAX, pour chacune des cases du tableau, les modules qui le composent.
    Code html : 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
    21
     
    <html>
     <head>
      <!-- appel des différents scripts -->
      <script src="...js"></script>
     </head>
     <body>
      <div id="header">...</div>
      <div id="mainContent">
       <table id="layoutContainer">
        <tr><ts id="fullTop" colspan="3"><div class="contentContainer"></div></td></tr>
        <tr>
         <td id="leftColumn"><div class="contentContainer"></div></td>
         <td id="centerColumn"><div class="contentContainer"></div></td>
         <td id="rightColumn"><div class="contentContainer"></div></td>
        </tr>
        <tr><ts id="fullBottom" colspan="3"><div class="contentContainer"></div></td></tr>
       </table>
      </div>
     </body>
    </html>
    Et c'est à ce niveau que j'obtiens mon problème :
    Sous Firefox, tout se passe correctement, et je peux immédiatement voir le contenu des div.contentContainer tandis que sous MSIE (6 et 7), ils ne sont pas visibles dans la page, mais en consultant l'arbre DOM généré, à l'aide de IE Developer Toolbar, les éléments ont bien été ajoutés.

    Craignant que le problème vienne de la feuille de style CSS, j'ai effectué différents tests, mais rien n'y fait. En revanche, en enregistrant l'arbre DOM généré et en chargeant le fichier statique cette fois sous explorer, l'affichage correspond à celui de Firefox (à quelques différences de CSS près).

    Quelqu'un a-t-il déjà rencontré le problème, et surtout trouvé une solution ?
    Y-a-t-il une méthode à appeler pour forcer IE à parser à nouveau l'arbre XML ?

    Merci à ceux qui ont pris le temps de lire jusqu'ici et d'avance à ceux qui prendront le temps de répondre.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    problème de cache.
    Des pistes ici ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    J'ai pensé au problème de cache, mais le contenu est récupéré correctement (chaque fragment a une URL suffisamment différente pour que même avec le cache activé, ça ne puisse pas poser de problème), et placé correctement dans l'arbre DOM. C'est l'affichage qui n'est pas mis à jour uniquement.

    Je viens de lire un article sur MSDN me conseillant d'utiliser l'attribut DEFER pour l'exécution de mes scripts chargés dynamiquement (http://msdn2.microsoft.com/en-us/library/ms533897.aspx) . Je regarde et je mets à jour ce post.

    {EDIT}
    Je viens de trouver que l'édition des tableaux en JS pour MSIE posait un peu problème ... et qu'il valait mieux utiliser leurs fonctions ... (dixit kro$oft)
    http://msdn2.microsoft.com/en-us/library/ms532998.aspx

  4. #4
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Après une série de tests, il semble bien que le problème vienne de la création du tableau avec MSIE.
    J'ai refait le test avec un fichier HTML local construit à l'identique, j'arrive exactement aux mêmes résultats. En faisant une partie de la construction du code à la main, j'en arrive toujours au problème au même endroit.

    Il semble que MSIE ne me permette pas de créer un <table> dans un <div> à l'aide des fonctions DOM document.createElement('table'); du moins il ne le reconnait pas en tant que tableau et n'affiche rien ...

  5. #5
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    J'ai finalement trouvé la solution,

    MSIE n'affiche les tableaux générés par JavaScript QUE SI le javascript crée une baliseTBODY qui contient les cellules !

    Merci beaucoup M$ pour ces explications non données ...

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

Discussions similaires

  1. ObjectDataProvider : pb MAJ de l'affichage
    Par jnussas dans le forum Windows Presentation Foundation
    Réponses: 16
    Dernier message: 22/07/2008, 16h43
  2. [AJAX] Parser du Html (texte) en Html Dm.
    Par thibaut dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/12/2007, 16h34
  3. [Ajax] [HTML] [DOM] Parser du Html (texte) en Html DOM ou en DOM
    Par thibaut dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2007, 14h44
  4. [AJAX] creation d'un tableau d'affichage des données
    Par highman dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/04/2007, 16h30
  5. Réponses: 8
    Dernier message: 27/12/2006, 23h51

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