Hello à tous !
Hé bien ... Voilà. Lassé de voir des nuanciers javascript utilisant la méthode document.write pour insérer le contenu, j'ai développé ma propre solution en utilisant la création d'éléments via le DOM (via document.createElement() et autres).
Seulement, j'ai un souci de taille ! Les nuanciers s'affichent très bien sous Firefox, Opera et Safari, mais pas sous MSIE 6/7
MSIE souffrirait-il d'un énorme bug dans la création d'élément, ou ai-je fait une erreur de programmation ?
Voici le code (dumoins celle pour les nuances de gris) ECMAScript du nuancier :
PS : $id() est un raccourci maison créé pour document.getElementById()
Modifié par Ladytron (11 Jan 2007 - 13:41)
Hé bien ... Voilà. Lassé de voir des nuanciers javascript utilisant la méthode document.write pour insérer le contenu, j'ai développé ma propre solution en utilisant la création d'éléments via le DOM (via document.createElement() et autres).
Seulement, j'ai un souci de taille ! Les nuanciers s'affichent très bien sous Firefox, Opera et Safari, mais pas sous MSIE 6/7

MSIE souffrirait-il d'un énorme bug dans la création d'élément, ou ai-je fait une erreur de programmation ?
Voici le code (dumoins celle pour les nuances de gris) ECMAScript du nuancier :
function DrawPalette(sContainerID, sPrefix, bGreyScale, iOStep, iMStep, iIStep, iColorWidth, iColorHeight)
{
var outer, middle, inner;
var oPaletteInfos = new Object();
oPaletteInfos.rows = 0;
oPaletteInfos.cols = 0;
oPaletteInfos.tonesPerColor = 0;
var oNuancier = document.createElement('div');
var oPalette = document.createElement('table');
/* oPalette.setAttribute('style','background-color: #fff; border: 1px solid #999;');
oPalette.setAttribute('cellspacing','0');*/
oPalette.style.backgroundColor = '#fff';
oPalette.border = '1px solid #999';
oPalette.cellSpacing = 0;
if(bGreyScale == true)
{
// FF and others
/* oNuancier.setAttribute('id',sPrefix+'PaletteGS');
oNuancier.setAttribute('style','width: 256px; margin-top: 1Opx;');*/
// MSIE
oPalette.id = sPrefix+'PaletteGS';
oPalette.style.marginTop = 10+'px';
oPalette.style.width = 256+'px';
var oPaletteRow = document.createElement('tr');
for (outer = 0; outer < 256; outer++)
{
var oPaletteRowCell = document.createElement('td');
/* oPaletteRowCell.setAttribute('style','margin: 0; padding: 0; height: 16px; width: 1px; cursor: pointer; background-color: rgb('+outer+','+outer+','+outer+');');
oPaletteRowCell.setAttribute('onmouseover','setHex(this,true,"'+sPrefix+'");');
oPaletteRowCell.setAttribute('onclick','setHex(this,true,"'+sPrefix+'");');*/
/* MSIE >_< */
oPaletteRowCell.style.padding = 0;
oPaletteRowCell.style.height = 16+'px';
oPaletteRowCell.style.width = 1+'px';
oPaletteRowCell.style.backgroundColor = 'rgb('+outer+','+outer+','+outer+')';
oPaletteRowCell.onmouseover = 'setHex(this,true,"'+sPrefix+'");';
oPaletteRowCell.onclick = 'setHex(this,true,"'+sPrefix+'");';
oPaletteRowCell.innerText = ' ';
oPaletteRow.appendChild(oPaletteRowCell);
}
oPalette.appendChild(oPaletteRow);
}
else
{
// ici la palette en couleurs
}
oNuancier.appendChild(oPalette);
$id(sContainerID).appendChild(oNuancier);
}
PS : $id() est un raccourci maison créé pour document.getElementById()
Modifié par Ladytron (11 Jan 2007 - 13:41)