You can use the DOM Range :
function getCharOffsetRelativeTo(container, node, offset) { var range = document.createRange(); range.selectNodeContents(container); range.setEnd(node, offset); return range.toString().length; }
Example:
var sel = window.getSelection(); var pre = document.getElementById("your_pre_id"); var offset = getCharOffsetRelativeTo(pre, sel.anchorNode, sel.anchorOffset);
Cautions:
- This will work in all major browsers except IE <= 8. If you need a solution for IE, I can provide it.
- This function will count the characters inside the
<script> or <style> tags and invisible elements (for example, hidden CSS display: none ).
source share