Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment trouver la position exacte d'une sélection

2 réponses
Avatar
Claude Schneegans
Bonjour,

Bon, alors voilà, j'ai une page qui affiche du texte, le visiteur y sélectionne un certaine zone de texte, j'ai besoin de savoir ousque cette zone se trouve dans le texte, c-à-dire l'indice du caractère et la longueur de la zone, je n'arrive pas à trouver quoi que ce soit là dessus dans la doc.

Merci.

Note, pour ce qui est du contenu de la zone, je sais faire (text range et tout le saint-frusquin), mais ce que je veux, ce n'est pas son contenu, mais à yousqu'elle est.

2 réponses

Avatar
Jean
Bonjour,

A l'aide des propriétés bounding[Height/Width/Top/Left] et/ou offset[Top/Left] de l'objet TextRange :
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_textrange.asp

Et/Ou encore (plus maniable dans une sélection multiligne) en utilisant les propriétés bottom, left, right, top de l'objet
TextRectangle :
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/textrectangle.asp

Bien sûr vous devrez probablement faire des calculs de positionnement en fonction de la structure du document et de ce que vous
voulez faire exactement.

Voici 2 fichiers htm qui illustrent certaines des propriétés ci-dessus :

<!---8<---position_selection_multiple.htm---Jean-JMST-Belgium--->
<script>
function document.onselectionchange(){
//IE 5.5 et +
trange=document.selection.createRange()
with(trange){
var lignes=getClientRects()
D1.innerText=''
for(i=0;i<lignes.length;i++){
with(lignes[i]){
D1.innerText+='nLIGNE '+(i+1)+' : '+
'top = '+top+' '+
'left = '+left+' '+
'right = '+right+' '+
'bottom = '+bottom
}
}
}
}
</script>

<script defer>
D1.style.backgroundColor='lemonchiffon'
</script>
<div>
Sélectionner du texte dans les 6 lignes qui suivent :<br><br>
sssssssssssssssssssssssssssssssssssss<br>
ccccccccccccccccccccccccccccccccccccc<br>
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr<br>
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii<br>
ppppppppppppppppppppppppppppppppppppp<br>
ttttttttttttttttttttttttttttttttttttt<br>
<br>
<br>
</div>

<div idÑ></div>
<!---8<---position_selection_multiple.htm---Jean-JMST-Belgium--->

<!---8<---position_selection_unique.htm---Jean-JMST-Belgium--->
<script>
function document.onselectionchange(){
//IE 5.5 et +
trange=document.selection.createRange()
with(trange){
D1.innerText='offsetLeft = '+offsetLeft+'n'+
'offsetTop = '+offsetTop+'n'+
'boundingHeight = '+boundingHeight+'n'+
'boundingWidth = '+boundingWidth+'n'+
'boundingLeft = '+boundingLeft+'n'+
'boundingTop = '+boundingTop
}
}
</script>

<script defer>
D1.style.backgroundColor='lemonchiffon'
</script>

Sélectionner du texte dans la ligne qui suit :<br><br>
<div>
script script script script script<br>
</div>
<br><br>
<div idÑ></div>
<!---8<---position_selection_unique.htm---Jean-JMST-Belgium--->

Amicalement,

Jean - JMST
Belgium

"Claude Schneegans" a écrit dans le message de news:
Bonjour,

Bon, alors voilà, j'ai une page qui affiche du texte, le visiteur y sélectionne un certaine zone de texte, j'ai besoin de savoir
ousque cette zone se trouve dans le texte, c-à-dire l'indice du caractère et la longueur de la zone, je n'arrive pas à trouver quoi

que ce soit là dessus dans la doc.

Merci.

Note, pour ce qui est du contenu de la zone, je sais faire (text range et tout le saint-frusquin), mais ce que je veux, ce n'est
pas son contenu, mais à yousqu'elle est.




Avatar
Claude Schneegans
A l'aide des propriétés bounding[Height/Width/Top/Left] et/ou offset[Top/Left] de l'objet TextRange



Oui, merci.
Mais ça, ça me donne la position « géographique » de la zone dans la page affichée, pas l'adresse
de la chaîne dans le texte source. Ce que je cherche, c'est l'indice du premier caractère, et la longueur
du texte sélectionné.

J'ai fini par me débrouiller en entourant chaque zone sélectionnée par un SPAN qui change la couleur
de fond. À la soumission du formulaire, je resaisis la source de la zone totale de texte traitée et la transmets
dans un champ caché. Dans la page suivante, j'analyse le contenu, repère les SPANs introduits, enlève les SPANs
et calcule l'adresse des zones qui étaient dedans.
C'est un peu galère, mais ça marche.

--
_______________________________________
(Please send any spam to this address: )
Thanks.