Bonjour,
J'ai sur ma page web, une zone de palette de couleur en cliquant dessus j'appelle la fonction colored avec la couleur en paramètre.
Cette fonction doit inserer du texte dans un textearea la voici:
C'est sous IE que ca plante
function colored(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla
//cette parti marche (je vous la communiquerai si vous souhaitez)
}
else
{
// Si on est sur IE
oField = document.forms['news'].elements['newst']; //récupération de la zone de texte
str = document.selection.createRange().text.value; //récupération de la séléction
C'est la que ca plante, il ne voi pas de texte séléctionné
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[color=" + selec + "]" + str + "/color";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
et ici aussi je pense car le texte s'insère toujours au début de la zone de texte quelquesoit la position du curseur
alert(oField.caretPos.length);
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[color=" + selec + "]/color" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
Configuration: Windows XP
Firefox 2.0.0.14