Bonsoir à tous,
voilà il y a de cela quelques jours je cherchais un moyen de récupérer la position de mon curseur sur un élément <div> avec un l'option contentedit ="true". Après d'interminables recherches, je suis tombé sur cette solution qui fonctionne à merveille :
http://niichavo.wordpress.com/2009/0...rsor-position/
Du moins elle fonctionne à merveille, à un détail près ! Lorsque j'intègre des tags html dans ma div éditable, la fonction ne me retourne plus la bonne position.
Par exemple si je fais un essai sur "le chat est noir", cela va fonctionner, par contre sur "le <strong>chat</strong> est noir", ça ne va pas fonctionner car il détecte apparemment ma balise "<" comme un nouveau noeud.
Est ce que l'un d'entre vous aurait une idée qui me permettrait de contourner cette limite.
Je vous mets ci dessous le code de la fonction permettant de retourner la position du curseur :
Par avance merci pour vos idées et conseils.
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
22
23
24
25
26 function getCursorPos() { var cursorPos; if (window.getSelection) { var selObj = window.getSelection(); var selRange = selObj.getRangeAt(0); cursorPos = findNode(selObj.anchorNode.parentNode.childNodes, selObj.anchorNode) + selObj.anchorOffset; /* FIXME the following works wrong in Opera when the document is longer than 32767 chars */ } else if (document.selection) { var range = document.selection.createRange(); var bookmark = range.getBookmark(); /* FIXME the following works wrong when the document is longer than 65535 chars */ cursorPos = bookmark.charCodeAt(2) - 11; /* Undocumented function [3] */ } return cursorPos; } function findNode(list, node) { for (var i = 0; i < list.length; i++) { if (list[i] == node) { return i; } } return -1; }
Partager