11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour, j'ai l'impression que ie et firefox interprètent différemment les couleurs quand par exemple je fais :

var couleur = document.body.backgroundColor


Sous ie j'ai une valeur en html (#FFFFFF) et sous firefox une valeur de la forme suivante : rgb(255,255,255).

Je suis donc obliger pour faire un traitement quelconque de faire :


// si ie
if (substr(0,1) == "#")
{ 
   // traitement pour ie
} else {
  // traitemnent pour firefox
}


est-il possible de le faire différent ou de récupérer la même valeur à chaque fois

Merci
A+
Modifié par therock (26 Sep 2005 - 22:02)
Bonjour,
non je ne pense pas.
IE donne toujours le résultat sous forme de couleur hexa, et je pense que firefox laisse la valeur que tu avais toi-même fixé dans ton CSS.
Essaye peut être en ajoutant style entre body et backgroundColor et ça marchera passablement mieux Smiley cligne et tu auras plus besoin de t'ennuyer avec tes #
en fait à la base dans la page, je fais :


<td style="background-color:#FFFFFF">0</td>


Avec Firefox, je récupère une valeur égale à rgb(255,255,255) et avec ie la valeur #FFFFFF
Sinon, tu peux peut-être faire ça si ce rgb(xx,xx,xx) t'embête :

Admettons pour cet exemple que c'est la variable "couleur" que tu vas traiter :
On va donc convertir si nécessaire rgb(xx,xx,xx) en #xxxxxx.


if (couleur.substring(0,3)=="rgb") couleur = eval(couleur);

function rgb (r, g, b) {
var n = (r<<16) + (g<<8) + b;
return '#' + (r<16? '0':'') + n.toString(16);
}
Il suffira de modifier la fonction et le if...


if (couleur.substring(0,4)=="rgba") couleur=eval(couleur);

function rgba (r, g, b, a) {
var n = (r<<24) + (g<<16) + (b<<8) + a;
return (r<16? '0':'') + n.toString(16);
}
Donc si je fais :

window.document.body.style.backgroundColor = "#FFFFFF"


firefox va le transformer en rgb("255,255,255") et ie non ?