2017-09-17 17 views
0

La fonction ci-dessous ramène le curseur au début. Comment pourrais-je le faire rester au même endroit après l'appel de la fonction?contenteditable: sauvegarde et restauration de la position du curseur

function highlightText() { 
      var mystring = document.getElementById("writeArea").textContent; 
      mystring = mystring.replace(/function/g , "<span class=\"func\">function</span>"); 
      document.getElementById("writeArea").innerHTML = mystring; 
     } 

déclaration contentEditable:

<div class="codeArea" id="writeArea" contenteditable="true"> <p> edit me! </p> </div> 

Répondre

0

Utilisez selectionStart pour obtenir et définir la position du caret:

document.getElementById("writeArea").onkeyup = highlightText(this); 
 
function highlightText(o) { 
 
    var mystring = document.getElementById("writeArea").textContent, 
 
    caretPosition = o.selectionStart; 
 
    mystring = mystring.replace(/function/g , "<span class=\"func\">function</span>"); 
 
    document.getElementById("writeArea").innerHTML = mystring; 
 
    document.getElementById("writeArea").selectionStart = caretPosition; 
 
}
<div class="codeArea" id="writeArea" contenteditable="true"> <p> edit me! </p> </div>

+0

Désolé pour la question de noob, mais ce matin Je suppose à mettre pour o? Google chrome vient de me donner une erreur de "Uncaught TypeError: Impossible de lire la propriété 'selectionStart' de undefined". –

+0

Une référence à l'objet document de votre div contenu –