Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug Internet Explorer / CSS / JavaScript

8 réponses
Avatar
Olivier Miakinen
Bonjour,

Comme d'hab' j'ai des problèmes avec Internet Explorer, et comme d'hab'
je n'ai pas le droit de faire l'impasse dessus.

Le problème est que IE semble ne pas appliquer tous les styles de la
feuille de style sur des éléments qui sont générés après coup par
JavaScript.

Voici une page d'exemple un peu expurgée mais qui montre encore le bug :
<http://www.miakinen.net/tmp/bugcssjs/>.

Les quatre premières rangées de la table sont écrites statiquement en
HTML, tandis que les deux autres sont générées par JavaScript. Dans
Mozilla et Netscape 7.2 le rendu est identique pour les six rangées,
mais avec Internet Explorer 6 certains styles ne sont pris en compte que
par ce qui est statique.

Comment faire ? Par exemple, est-il possible de ne lire la feuille de
style qu'à la fin ? Est-ce que d'autres ont déjà rencontré le problème
avant moi ?

[ publication sur fciw.auteurs et fcl.javascript, suivi sur ce dernier ]

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

8 réponses

Avatar
Bobe
Olivier Miakinen nous a dit le 28/01/2005 17:06:

Le problème est que IE semble ne pas appliquer tous les styles de la
feuille de style sur des éléments qui sont générés après coup par
JavaScript.

Voici une page d'exemple un peu expurgée mais qui montre encore le bug :
<http://www.miakinen.net/tmp/bugcssjs/>.



J'ai remarqué parfois des problèmes avec IE (non application des styles)
lorsqu'on ajoute l'attribut 'class' avec setAttribute().

Essaie en faisant plutôt:
elt.className = 'nom_de_la_classe';

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
Olivier Miakinen

J'ai remarqué parfois des problèmes avec IE (non application des styles)
lorsqu'on ajoute l'attribut 'class' avec setAttribute().

Essaie en faisant plutôt:
elt.className = 'nom_de_la_classe';


Ça maaaarche ! Bon, je te dois un pot aussi, comme à YD.

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
Pascal Chevrel
Bonjour,

Comme d'hab' j'ai des problèmes avec Internet Explorer, et comme d'hab'
je n'ai pas le droit de faire l'impasse dessus.

Le problème est que IE semble ne pas appliquer tous les styles de la
feuille de style sur des éléments qui sont générés après coup par
JavaScript.

Voici une page d'exemple un peu expurgée mais qui montre encore le bug :
<http://www.miakinen.net/tmp/bugcssjs/>.

Les quatre premières rangées de la table sont écrites statiquement en
HTML, tandis que les deux autres sont générées par JavaScript. Dans
Mozilla et Netscape 7.2 le rendu est identique pour les six rangées,
mais avec Internet Explorer 6 certains styles ne sont pris en compte que
par ce qui est statique.

Comment faire ? Par exemple, est-il possible de ne lire la feuille de
style qu'à la fin ? Est-ce que d'autres ont déjà rencontré le problème
avant moi ?

[ publication sur fciw.auteurs et fcl.javascript, suivi sur ce dernier ]



Je ne vois pas de différence entre IE6SP2 et Gecko, quels styles ne sont
pas pris en compte ?

Pascal


--
Pascal Chevrel - Mozilla Champion
FAQ Mozilla/Netscape en français : http://www.chevrel.org/fr/faq/
Forums SOS online.net: http://forums.chevrelbureau.com/

Avatar
Olivier Miakinen

<http://www.miakinen.net/tmp/bugcssjs/>.


Je ne vois pas de différence entre IE6SP2 et Gecko,


C'est parce qu'entretemps j'ai mis à jour ma page en suivant les
conseils d'Aurélien.

quels styles ne sont pas pris en compte ?


Je viens de changer la page de nouveau pour mettre le bug en évidence.
<http://www.miakinen.net/tmp/bugcssjs/>

Sur cette page, il y a :
- 4 rangées statiques (OK sur IE et Gecko)
- 2 rangées dynamiques avec td.setAttribute("class") (OK Gecko, bug IE)
- 2 rangées dynamiques avec td.className (OK sur IE et Gecko)

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.


Avatar
Do Re Mi chel La Si Do
Bonsoir !

Pourtant, avec Maxthon (où j'ai le choix du moteur de rendu, IE ou Gecko),
je vois la même chose, avec les deux moteurs...
Mais, peut-être, Maxthon travaille-t'il un peu différemment. Auquel cas, le
moteur ne serait pas seul en cause.

--
Michel Claveau
Avatar
Olivier Miakinen

Pourtant, avec Maxthon (où j'ai le choix du moteur de rendu, IE ou Gecko),
je vois la même chose, avec les deux moteurs...
Mais, peut-être, Maxthon travaille-t'il un peu différemment. Auquel cas, le
moteur ne serait pas seul en cause.


C'était forcément un problème indépendant du moteur de rendu, puisque le
rendu était bon avec IE sur les 4 premières rangées (classe spécifiée de
manière statique) et qu'il l'est aussi maintenant sur les deux dernières
(utilisation de element.className).

En fait, c'est l'implémentation de element.setAttribute("class", ...)
qui est buguée en ce qu'elle ne met pas à jour l'attribut class comme
elle le devrait.

Comme quoi, si l'on veut être sûr que cela marche avec IE, il faut
tester avec IE.

Avatar
Do Re Mi chel La Si Do
Bonjour !

Comme quoi, si l'on veut être sûr que cela marche avec IE, il faut
tester avec IE.




on doit pouvoir factoriser cette phrase, et devenir plus juste, et moins
sectaire :


function tester(soft){
if (test.soft == Ok){
alert("Oui");}
else{
alert("Non");}

tester(IE);
tester(IE.Mac);
tester(Firework);
tester(Maxthon);
tester(Safari);
tester(Mosaic);
...


Autrement dit, cette phrase est aussi valable pour tout les logiciels, pas
seulement pour IE.
Ou encore : La Palisse n'aurait pas dit mieux...


@-salutations
--
Michel Claveau



Avatar
Olivier Miakinen
Le 29/01/2005 08:37, Do Re Mi chel La Si Do me répondait :

Comme quoi, si l'on veut être sûr que cela marche avec IE, il faut
tester avec IE.


on doit pouvoir factoriser cette phrase, [...]

Autrement dit, cette phrase est aussi valable pour tout les logiciels, pas
seulement pour IE.


Oui, nous sommes bien d'accord. J'avais juste cru, suite à ta remarque
concernant Maxthon, que tu t'en servais à la place d'IE pour tester le
rendu de ce dernier. Ta dernière réponse me montre que ce n'est pas le
cas, et je te prie d'accepter mes excuses.