Поведение, которое Selection.Addrange () объединяет существующий диапазон, и указанный диапазон был удален.

#make sure to call selection.removeAllRanges(), then call selection.addRange(range)
selection = window.getSelection();    
range = document.createRange();
range.selectNodeContents(elem);
selection.removeAllRanges();         
selection.addRange(range);  
Friendly Hawk