Forums Développement Multimédia

Aller au contenu

Problème de style chargés en ajax

CODE Ajax JQuery EaseJs

9 réponses à ce sujet

#1 shgamer

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3336 messages

Posté 11 June 2007 - 16:07 PM

Salut tout le monde,

J'ai un problème légèrement embêtant dont voici l'explication.

J'ai une page A avec des styles définis ( .toto {color:blue...} ).

Dans cette page je charge une page B qui a un élément avec ce style appliqué (<p class="toto">bla bla</p> ).

Sous firefox aucun problème, sous IE, la classe n'est pas chargée sur mon élément...

Quelqu'un en sait-il plus ? Y a t'il un moyen pour contourner le problème, cela vient-il d'un élément autre de ma page ?

Merci d'avance.

#2 julnumberone

  • Members
  • PipPipPipPipPipPipPipPip
  • 1361 messages

Posté 11 June 2007 - 16:49 PM

J'avais eu un soucis similaire, mais avec des actions javascript exécutée sur un onload.

Donc je chargeait une page contenant de l'html, et évidement mes actions javascript n'étaient pas répercutés.

Solution: j'ai ré-appliqués mes actions sur le readystate == 4 du chargement de la page, et voilou.

Bon je ne sais pas si ça s'applique vraiment à ton cas mais bon ....

Mais ça reste beurk, si quelqu'un à mieux ...

#3 shgamer

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3336 messages

Posté 11 June 2007 - 16:54 PM

Vouep le javascript c'est classique :)

Nan la c'est les styles CSS :D

#4 julnumberone

  • Members
  • PipPipPipPipPipPipPipPip
  • 1361 messages

Posté 11 June 2007 - 20:56 PM

J'me disais aussi que celà aurait été trop simple :D

Je passe donc mon tour :)

#5 Tonic2

    Ceinture Jaune

  • Members
  • PipPip
  • 27 messages

Posté 14 June 2007 - 16:06 PM

Salut,

j'ai un peu le même problème que toi : j'invoque des services via ajax, pour me renvoyer des données. Dans ces données, y a de la mise en forme avec des classes css.

Ces classes css sont stockées dans mon ma page faisant appel aux script ajax.

Sous firefox, les données sont bien renvoyée, et les classes css prisent en compte.
Sous IE, les données sont renvoyée, mais les classes pas prise en compte...

Y a un moyen de contourner ce problème?

Merci d'avance. :D

#6 pbmaske

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3032 messages

Posté 14 June 2007 - 20:31 PM

C'est bizarre j'ai fait une page similaire, qui utilisait des webservices (donc données externes) passage en XML et ajax remettait correctement en forme, les styles css étaient bien appliqués comme il fallait :/
Du code peut être pour voir un peu ?!

#7 Tonic2

    Ceinture Jaune

  • Members
  • PipPip
  • 27 messages

Posté 15 June 2007 - 08:25 AM

Salut Deuns,

merci déjà d'avoir prit un peu de temps sur ce problème.

Je viens de mettre un exemple en place.

Dans ma page principale ce code css:
<style type="text/css">
                                                               
                        .productListingData
                        {
                                font-size: 30pt;                                 
                                font-family: Verdana, Arial, sans-serif;
                                color: green;
                        }              
</style>

En ajax, je renvoie ceci :

$strTest ="<table><tr><td class='productListingData'>coucou</td></tr></table>";
return $strTest;

Sous fire fox, la css est prise en compte, pas sous IE.

Un autre test :
$strTest ="<table><tr><td><font color='green' size='30'>coucou</font></td></tr></table>";
return $strTest;

La ca tourne impeccable, que se soit sous ff, ou sous ie. Y a vraiment rien à comprendre, comme ci ie ne pouvait pas appliquer de styles définies dans une class, pour un retour ajax.

Merci d'avance pour vos conseils :D

Modifié par Tonic, 15 June 2007 - 08:28 AM.


#8 caedes

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 185 messages

Posté 15 June 2007 - 08:51 AM

Solarweb => J'ai déjà eu ce genre de problème en CSS lors d'intégration de web-services, la solution que j'y apporte et l'ajout d'un ID devant la classe à ciblé ce qui permet aux navigateurs de mieux s'y retrouver.

#9 Tonic2

    Ceinture Jaune

  • Members
  • PipPip
  • 27 messages

Posté 15 June 2007 - 08:54 AM

Bon, finalement je viens de trouver le porblème.

Je n'utilisais pas directement innerHTML, mais cette méthode (à cause d'un googleMap) :

function setInnerHTML(divContent, HTML)
{
  divContent.innerHTML=HTML;
  var All=divContent.getElementsByTagName("*");
  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")
  }
  var AllScripts=divContent.getElementsByTagName("script")
  for (var i=0; i<AllScripts.length; i++) {
         var s=AllScripts[i];
         if (s.src && s.src!="") {
                // Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
                eval(getFileContent(s.src));
         }
         else {
                eval(s.innerHTML);
         }
  }
}

Ca ca tourne sous firefox, ca tourne sous ie, mais les classes css ne sont pas prise en compte. Je fais donc un teste préliminaire, et j'utilise simplement le innerHTML quand nécessaire.

#10 pbmaske

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3032 messages

Posté 15 June 2007 - 11:17 AM

Tu utilise une bibliothèque pour javascript ? prototype.js par exemple ou autre ?
d'après ce que je vois a priori non !
Je ne peux que te conseiller d'utiliser ces librairies qui vont t'éviter d'avoir des soucis de ce genre (pour ma part j'utilise scriptaculous avec prototype donc, et il existe une fonction génialissime et trés simple à utiliser, ce qui permet d'éviter de se soucier de ce genre de problèmes).

Bon courage en tout cas !



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP