В браузерах, которые поддерживают «выделение» и «диапазон», вы захотите создать объект диапазона и затем установить его начало / конец. Документация Mozilla для объекта "range" содержит много информации.
Chrome не поддерживает это, по крайней мере, не с этим API, и я уверен, что Safari тоже не поддерживает.
edit & mdash; спасибо @Tim Down за то, что он отметил, что WebKit (Chrome & Safari) действительно поддерживают это, что означает, что в моем jsfiddle была опечатка или что-то в этом роде!