Подтвердить что ты не робот

Получить родительский элемент выделенного текста

Возможно ли получить родительский элемент выделенного текста на странице? Например:

<div class="someparent">

Selection of this text should refer to the 'someparent' class.

<span class="spanparent">If this is selected, the parent should be this span</span>

</div>

Потому что, получая выделенный текст, он обычно получает его из окна или документа (в зависимости от браузера), но возможно ли получить родительский элемент выделенного текста?

4b9b3361

Ответ 1

Здесь функция, которая предоставит вам самый внутренний элемент, который содержит весь пользовательский выбор во всех основных браузерах (кроме случаев, когда выбраны несколько диапазонов, которые поддерживаются только в Firefox. Если это важно, я могу расширить пример также иметь дело с этим делом):

function getSelectionParentElement() {
    var parentEl = null, sel;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount) {
            parentEl = sel.getRangeAt(0).commonAncestorContainer;
            if (parentEl.nodeType != 1) {
                parentEl = parentEl.parentNode;
            }
        }
    } else if ( (sel = document.selection) && sel.type != "Control") {
        parentEl = sel.createRange().parentElement();
    }
    return parentEl;
}

Ответ 2

Я бы предложил использовать этот

window.getSelection().anchorNode.parentElement

Я тестировал в safari osx 10.9