使用rangy库获取所选文本的父节点

时间:2012-05-12 00:43:15

标签: javascript rangy

我正在使用rangy库,可以选择内容可编辑的文字,如下所示:

var sel = rangy.getSelection();
alert(sel);

我无法弄清楚如何获取所选文本父节点/元素。例如,如果我选择的文本是

<strong>My Text</strong> 
or
<h1>My Title</h1>

我怎样才能包含强节点或H1元素?

1 个答案:

答案 0 :(得分:8)

sel.anchorNode.parentNode将为您提供仅包含所选内容的一端的节点的父节点。要获得整个选择的最内层包含元素,最简单的方法是从选择中获取一个Range并查看其commonAncestorContainer属性(可能是文本节点,在这种情况下,您需要获取其父级) :

var sel = rangy.getSelection();
if (sel.rangeCount > 0) {
    var range = sel.getRangeAt(0);
    var parentElement = range.commonAncestorContainer;
    if (parentElement.nodeType == 3) {
        parentElement = parentElement.parentNode;
    }
}