Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The following code assumes:</p> <ul> <li>There is always a single text node within the editable <code>&lt;div&gt;</code> and no other nodes</li> <li>The editable div does not have the CSS <code>white-space</code> property set to <code>pre</code></li> </ul> <p>Code:</p> <p><div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code"> <pre class="snippet-code-js lang-js prettyprint-override"><code>function getCaretPosition(editableDiv) { var caretPos = 0, sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.rangeCount) { range = sel.getRangeAt(0); if (range.commonAncestorContainer.parentNode == editableDiv) { caretPos = range.endOffset; } } } else if (document.selection &amp;&amp; document.selection.createRange) { range = document.selection.createRange(); if (range.parentElement() == editableDiv) { var tempEl = document.createElement("span"); editableDiv.insertBefore(tempEl, editableDiv.firstChild); var tempRange = range.duplicate(); tempRange.moveToElementText(tempEl); tempRange.setEndPoint("EndToEnd", range); caretPos = tempRange.text.length; } } return caretPos; }</code></pre> <pre class="snippet-code-css lang-css prettyprint-override"><code>#caretposition { font-weight: bold; }</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"&gt;&lt;/script&gt; &lt;div id="contentbox" contenteditable="true"&gt;Click me and move cursor with keys or mouse&lt;/div&gt; &lt;div id="caretposition"&gt;0&lt;/div&gt; &lt;script&gt; var update = function() { $('#caretposition').html(getCaretPosition(this)); }; $('#contentbox').on("mousedown mouseup keydown keyup", update); &lt;/script&gt;</code></pre> </div> </div> </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload