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] setInnerHTML n'aime pas le css


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut [Ajax] setInnerHTML n'aime pas le css
    Bonjour à tous,
    je me suis trouvé confronté au fameux problème des scripts javascript qui ne s'executent pas si ceux-ci sont ajouté sur une page avec innerHTML. J'ai finalement essayé la solution proposé dans la FAQ, à savoir utiliser setInnerHTML. Cela fonctionne à merveille si ce n'est que les class définis dans un css ne sont plus interprété.
    Je m'explique, depuis que j'utilise setInnerHTML, les balises div supposés composé d'un arrière plan (définit dans le css) sont identifisé à l'aide d'un class=... . Seulement elles ne s'affiche tout simplement pas. En revanche, les balises div identifié avec un id=... s'affiche correctement....
    J'aimerai éviter d'avoir à changer mon énorme css et les quelques centaines de pages qui vont avec :-p.
    Y a -til une solution à ce problème ?
    Merci pour vos futurs réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    il n'y a pas dasn la FAQ ou les contribution un script pour ajouter dynamiqueemnt du script dasn une page avec le DOM createElement('script') ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    En fait je dois charger dynamiquement une page via l'objet xmlhttprequest.
    Pour afficher son contenu, j'utilisais innerHTML jusqu'au moment ou je découvre ce probleme de javascript non interprété. setInnerHTML semblait la solution miracle si seulement les class définies dans le css étaient interprétées .

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    J'ai oublié de préciser que ce problème n'avait lieu que sous Internet Explorer.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Dans cet exemple les pages sont construites à partir du responseText avec innerHMLT

    http://www.sebemex.fr/Extramiante/Catalogue/index.htm

    Je n'ai pas rencontré de souci particulier
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Invité de passage
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Par défaut solution ie css via setInnerHTML
    la solution du CSS sous Internet Explorer utilisant setInnerHTML

    ajouter le code css DANS le fichier ajax en question


    exemple :


    ---fichier ajax---contenant--javascript-----

    ...

    <style type='text/css'>
    .CSS_TD_BRD_BORDERS {border:white solid 2px;}
    .CSS_TD_BRD_BORDERS:hover {border:silver dashed 2px;}
    </style>


    .....


    <td class='CSS_TD_BRD_BORDERS'> ....



    -------------------------------------------------

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut
    Si quelqu'un revient par ici avec le même problème (comme moi par exemple), voici le pourquoi du problème :

    Dans la fonction setInnerHtm (cf http://www.developpez.net/forums/sho...9&postcount=18) il est indiqué en début de fonction :

    for (var i=0; i<All.length; i++) {
    All[i].id=All[i].getAttribute("id")
    All[i].name=All[i].getAttribute("name")
    All[i].className=All[i].getAttribute("class")
    }
    mais l'ordre All[i].getAttribute("class") ne fonctionne pas sous IE qui attend All[i].getAttribute("className")

    Une solution possible :

    remplacer
    All[i].className=elementClass;
    par

    var elementClass = All[i].getAttribute("class");
    if (elementClass == null) {
    elementClass = All[i].getAttribute("className");
    }
    All[i].className=elementClass;
    Si jamais ça peut être utile à quelqu'un...

    Mamat'

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    merci de ton retour

    si tu as résolu ton problème n'oublie pas le tag

  9. #9
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par matyeu Voir le message
    Si quelqu'un revient par ici avec le même problème (comme moi par exemple), voici le pourquoi du problème :

    (...)

    Si jamais ça peut être utile à quelqu'un...
    Mamat'
    Pourrais-tu proposer cette solution dans le post où tu as trouvé la référence à setInnerHTML ? Ca pourrait en aider plus d'un !

Discussions similaires

  1. [AJAX] IE n'inclus pas le CSS en AJAX
    Par Bisûnûrs dans le forum Contribuez
    Réponses: 1
    Dernier message: 04/12/2009, 19h40
  2. Menu css et flash (IE n'aime pas la superposition)
    Par kl14582 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 17/11/2008, 13h34
  3. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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