2

如何获取用户选择文本的容器 id(例如,p 或 div 的 id)?

我想列出所选文本,用户选择一个文本然后单击一个按钮添加到列表中。当用户单击列表中的文本时,我想突出显示原始选择的位置。我需要容器的 id,因为所选文本可能不是唯一的并且在文档中出现多次。

我得到这样的选定文本从用户选择的文本中返回 HTML

4

2 回答 2

2

window.getSelection().anchorNode- 为您提供选择开始 window.getSelection().focusNode的 DOM 元素 - 为您提供选择结束的 DOM 元素

参考:https ://developer.mozilla.org/en-US/docs/Web/API/Selection?redirectlocale=en-US&redirectslug=DOM%2FSelection

于 2013-07-14T19:22:30.363 回答
2

这是可以实现跨浏览器的一种方法(未经测试)

var getSelectionContainer = function() { 

    if (document.selection){  // IE
        return document.selection.createRange().parentElement();
    }

    var select = window.getSelection();
    if (select.rangeCount > 0) {
       return select.getRangeAt(0).startContainer.parentNode;
    }
};

演示

(在 5 秒前选择一些文本,然后查看控制台)

链接

MDN window.getSelection

MDN selection.getRangeAt

MDN range.startContainer

MDN selection.rangeCount

于 2013-07-14T19:22:38.787 回答