Récuperation de texte selectionné javascript

Fermé
still-ska Messages postés 12 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 juillet 2008 - 13 juin 2008 à 10:21
JackNUMBER Messages postés 64 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 6 août 2020 - 18 janv. 2012 à 12:11
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();

}
}
}
A voir également:

3 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
13 juin 2008 à 10:33
salut

Pour ton premier probleme il faut mettre seulement

str = document.selection.createRange().text

Le texte ce trouve ici normalement
0
still-ska Messages postés 12 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 juillet 2008 2
13 juin 2008 à 10:53
Oui j'avais oublié de retirer ça, c'est ce que j'avais au début mais ça marchais pas, enfin, j'ai une autre fonction quasi identique et sur celle la ça marche mais ici non, (c'est pour ça que je bug)

donc la ligne du premier problème j'ai bien actuellement ceci:
str = document.selection.createRange().text
0
JackNUMBER Messages postés 64 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 6 août 2020 18
18 janv. 2012 à 12:11
document.getSelection() marche aussi.
0
still-ska Messages postés 12 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 3 juillet 2008 2
13 juin 2008 à 11:15
La deuxième fonction marche la première non!



function colored(selec)
{
if (isMozilla)
{//ca marche
}
else
{
// Si on est sur IE

oField = document.forms['news'].elements['newst'];
str = document.selection.createRange().text; C'est la que ca plante

//le reste de la fonction

}
}



function taille()
{
selec = document.news.sized.options[document.news.sized.selectedIndex].value;
if (isMozilla)
{//ca marche
}
else
{
// Si on est sur IE

oField = document.forms['news'].elements['newst'];
str = document.selection.createRange().text; Alors que la c'est pareil et que ca marche

//le reste de la fonction

}
}


Aider moi s'il vous plais j'y comprend plus rien

A autre chose! La différence notable que je vois entre ces 2 fonctions est que de la page php, la deuxième est appelé directement lors d'un click alors que pour la première, la page php appelle une fonction automatiquement, qui appel une autre lors d'un click qui en appel une autre.
0
var textRange = null;

textRange = document.selection.createRange();
str = textRange.text;

Kenavo !
0