window.getSelection()
(для которого document.getSelection()
является псевдонимом в HTML5-совместимых браузерах) возвращает объект Selection
, а не строку (это только внешне представляется строкой, поскольку ее toString()
метод возвращает выделенный текст). Наиболее полезным аспектом для этого является возможность получить один или несколько DOM Range объектов, представляющих выделение, используя getRangeAt()
.
Как только у вас есть Range, получить все DOM-узлы, которые он содержит, немного сложно. Вы можете использовать мою библиотеку Rangy , которая добавляет метод getNodes()
к его реализации Range:
var sel = rangy.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
var elements = range.getNodes([1]);
for (var i = 0; i < elements.length; ++i) {
alert("Selected element: " + elements[i].tagName);
}
}