JS: contenteditable [get/set]

by grano

HTML

<div contenteditable>foo bar</div>

JavaScript

var getSelection = function(elem) {
    var range = window.getSelection().getRangeAt(0);
    return {
        start: range.startOffset,
        end: range.endOffset
    };
};

var setSelection = function(elem, start, end) {
    var range = document.createRange();
    range.setStart(elem.firstChild, start);
    range.setEnd(elem.firstChild, end);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
};


var elem = document.querySelector("div");
setSelection(elem, 0, 3);
console.log( getSelection(elem) );