Чтобы развернуть ответ @ MatuDuke, вы можете получить позицию выделенного текста следующим образом:
var txt = window.getSelection(),
range = txt.getRangeAt(0),
boundary = range.getBoundingClientRect();
// Available positions:
// boundary.top
// boundary.bottom
// boundary.left
// boundary.right
Это даст вам значения пикселей относительно области просмотра.Однако в текстовых областях он не работает, и сейчас я пытаюсь решить эту проблему.