Bonjour,
je suis en train de programmer un truc et en cours de route je demande a l'usager de faire une selection de text (banale dans un <div>).
Dans cette sélection je détecte si il a sélectionné le mot au complet ou seulement une partie du mot, et si il a selectionné seulement quelques lettre je m'occupe à sa place de tout sélectionné en ajustant le range.
Et finalement si la sélection du user débute par des carateres illogique (une suite de '...', des espaces, des point virgule, etc...) et bien je recule dans la selection du user et lui founit encore une fois sa sélection 'clean' en changeant les range.
exemple : Il y a le mot " ...parfum " l'usager selectionne seulement 'arf' alors je lui donne 'parfum' ou encore il selectionne '...parfum ' alors je lui donne 'parfum'
Bon le truc c'est qu'en IE et Firefox le tout fonctionne.
En safari : partiellement ... si le changement de range est négatif alors la ca shlingue.
et finalement Opera = disfonctionnel
Voici mon code pour changer les ranges :
alors si ca vous avez des truc pour m'aider j'aimerai bien (pour safari et opera)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 /** *@param: selectedText c'est window.getSelection (selon le browser) */ _moveSelectionPos : function(selectedText, startSel, endSel) { if (selectedText.getRangeAt) { var r1 = selectedText.getRangeAt(0); r1.setStart(this.selectedText.anchorNode, this.startSelection+startSel);//les startSelection = anchorOffset r1.setEnd(selectedText.anchorNode, this.endSelection+endSel) ; //endSelection = focusOffset window.getSelection().addRange(r1); selectedText = window.getSelection(); } else { // ici tout est nickel this.rangeText.moveStart('character', startSel); this.rangeText.moveEnd('character', endSel); this.rangeText.select(); selectedText = this.rangeText.text; } //ie browser return selectedText; },
Partager