Bonsoir !
J'exp�rimente certaines propri�t�s d'HTML5 dont l'attribut contentEditable, et les range du DOM avec lesquelles je gal�re un petit peu. Je souhaiterais pouvoir r�cup�rer la s�lection de l'utilisateur, puis la supprimer pour la mettre � un autre endroit. Voici le code minimal :
Ceci fonctionne tr�s bien. Maintenant, le soucis commence si je mets des balises dans le texte. Par exemple, si je remplace le document du premier paragraphe par "Mon t<b>ex</b>te", la balise <b> est bien copi�e si je s�lectionne (j'ai mis la s�lection en gras) "Mon t<b>ex</b>te" ou "Mon t<b>ex</b>te" mais ce n'est pas le cas si je s�lectionne "Mon t<b>ex</b>te" ou "Mon t<b>ex</b>te".
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 <p contenteditable="true">Mon texte</p> <button onclick="modifier()">Modifier</button> <p id="paragraphe"></p> <script> function modifier() { var range = window.getSelection().getRangeAt(0); var contents = range.extractContents(); var elm = document.getElementById('paragraphe'); elm.appendChild(contents); } </script>
Les deux premiers cas sont logiques, il est bien sp�cifi� dans la documentation que si je s�lectionne e</b>, extractContents va automatiquement rajouter la balise d'ouverture manquante. En revanche cela me pose probl�me dans les deux cas suivants : en effet, en s�lectionnant "Mon t<b>ex</b>te" je sous-entends que je souhaite �galement s�lectionner le gras, mais la seule fa�on est de s�lectionner un caract�re avant ou un caract�re apr�s pour effectivement englober la balise. Ce que j'aimerais c'est que si je s�lectionne �a, je me retrouve avec "<b>ex</b>", et non "ex" uniquement
Je ne sais pas si je suis tr�s clair ?
Partager