На самом деле нет, window.getSelection() возвращает не текст, а объект
Selection. И если вы с ним пытаетесь работать как с текстом, то автоматически сработает его метод toString() и вы получите "только текст Hello World".
Если посмотрите документацию, то там есть и
Selection.anchorNode // Returns the Node in which the selection begins.
и также
Selection.focusNode // Returns the Node in which the selection ends.
Все так сложно потому, что выделение может начинаться в середине одного тега, и заканчиваться в середине другого, как-то так: