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

Contribuez Discussion :

IE n'inclus pas le CSS en AJAX


Sujet :

Contribuez

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut IE n'inclus pas le CSS en AJAX
    C'est ce qu'on lit un peu partout, sur tous les forums.

    Une des solutions préconisées est de recréer les styles en JS.
    En fait, il y a une méthode beaucoup plus simple que de se faire chier à recréer tous les styles en JS (surtout quand on en a beaucoup, et certains même chargés dynamiquement).

    Prenons deux fichiers, donc un chargé par le premier en AJAX :

    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
    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8" />
      <title>CSS</title>
      <script src="prototype.js"></script>
    </head>
    <body>
     
    <div id="content"></div>
     
    <script>
    new Ajax.Updater(
      'content',
      'content.php',
      {}
    );
    </script>
     
    </body>
    </html>


    Et content.php :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <style>
    .ok {
      background : green
    }
    </style>
     
    <div class="ok">
      Blablablablablablabla
    </div>

    Si ce code fonctionne très bien sur Firefox, ce n'est pas le cas sur IE qui ignore les styles.

    Une des solutions serait de mettre les styles en ligne à la place des classes, mais ce n'est pas le but de la manoeuvre.

    C'est beaucoup plus simple.

    Il suffit .... de mettre la balise style à la fin :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="ok">
      Blablablablablablabla
    </div>
     
    <style>
    .ok {
      background : green
    }
    </style>
    Et hop ça fonctionne comme par miracle. Pas besoin de technique JS à la con.





    C'est le même principe pour un simple innerHTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script src="prototype.js"></script>
     
    <div id="content">Texte</div>
     
    <script>
    $( 'content' ).innerHTML = '<style>.ok {background : green } </style><div class="ok">Blablablablabla</div>';
    </script>
    Ne fonctionne pas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script src="prototype.js"></script>
     
    <div id="content">Texte</div>
     
    <script>
    $( 'content' ).innerHTML = '<div class="ok">Blablablablabla</div><style>.ok {background : green } </style>';
    </script>
    Fonctionne.



    Voilà pour une méthode qui fonctionne donc sur tous les navigateurs, même IE, et sans changer l'ensemble du code pour du JS.

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    suffirait d'utiliser la librairie que j'ai mise dans les contributions pour créer dynamiquement les balises sur le retour ajax...
    Je pense que la balise style ainsi créée serait alors prise en compte ...
    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 !

Discussions similaires

  1. [NetBeans 8.0.2] Page JSP qui ne prend pas le CSS inclus
    Par gomisse dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 09/02/2015, 22h47
  2. [Ajax] setInnerHTML n'aime pas le css
    Par franckarts dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/04/2008, 12h09
  3. le javascript de firefox ne reconnait pas le css externe ?
    Par reski dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/03/2006, 13h23
  4. [Ah non pas Resolu] [CSS] Un probleme CSS
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 18/08/2005, 00h38

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