Сначала получите диапазон:
var savedRange;
savedRange = window.getSelection().getRangeAt(0);
При нажатии кнопки:
function formatCode(e){
var textAreaVal = document.getElementById('divWithContentEditable').innerText;
if(textAreaVal.length>0){
var newtxt = '<pre><code>'+savedRange+'
replaceIt ($ ('# topicDetails') [0], newtxt);
}
}
Добавить / Заменить элементы вокруг текста:
replaceIt(txtarea, newtxt) {
$(txtarea).text(newtxt));
}
Конечно, вы можете использовать Rangy , но я считаю, что добавление дополнительных 500 КБ для простых требований не рекомендуется.