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