Bonjour,
je cherche a obtenir la position d'une sélection d'un texte placé dans un div que l'on peut modifier à l'aide de l'attribut contentEditable.
j'arrive a obtenir la selection dans tous les navigateurs grâce à :
Ce que j'aimerai avoir c'est la position du curseur de fin et de début de la sélection au sein du div.
Par exemple si l'on prennait ce div et que l'on sélectionnait "Mon texte" j'aimerai que la fonction me renvoie [0,9] (en ne tenant pas compte des balises) ou alors [3,12] (en tenant compte des balises).
Le second cas serait nettement appréciable.
J'ai tenté le coup avec cette fonction :
Elle fonctionne bien dans Safari si le texte ne contient pas de balises.
Elle ne fonctionne pas ni dans Safari dans Firefox si le texte contient des balises.
Elle ne fonctionne pas dans Firefox si la sélection est faite de droite à gauche (le texte ne contenant pas de balise).
Si vous pouviez m'aider !
Merci, fef.
je cherche a obtenir la position d'une sélection d'un texte placé dans un div que l'on peut modifier à l'aide de l'attribut contentEditable.
j'arrive a obtenir la selection dans tous les navigateurs grâce à :
function gS()
{
if(window.getSelection)
{
return window.getSelection();
}
else if(document.getSelection)
{
return document.getSelection();
}
else
{
var selection = document.selection && document.selection.createRange();
if(selection.text)
{
return selection.text;
}
return false;
}
return false;
}
Ce que j'aimerai avoir c'est la position du curseur de fin et de début de la sélection au sein du div.
<div><b>Mon texte</b></div>
Par exemple si l'on prennait ce div et que l'on sélectionnait "Mon texte" j'aimerai que la fonction me renvoie [0,9] (en ne tenant pas compte des balises) ou alors [3,12] (en tenant compte des balises).
Le second cas serait nettement appréciable.
J'ai tenté le coup avec cette fonction :
function t2()
{
selection=gS();
debutTemp=selection.anchorOffset;
finTemp=selection.focusOffset;
alert('debut :' + debutTemp);
alert('fin :' + finTemp);
debut=Math.min(debutTemp,finTemp);
fin=Math.max(debutTemp,finTemp);
alert('['+debut+';'+fin+']');
}
Elle fonctionne bien dans Safari si le texte ne contient pas de balises.
Elle ne fonctionne pas ni dans Safari dans Firefox si le texte contient des balises.
Elle ne fonctionne pas dans Firefox si la sélection est faite de droite à gauche (le texte ne contenant pas de balise).
Si vous pouviez m'aider !
Merci, fef.