7

私はrangyライブラリを使用しており、次のように編集可能なコンテンツ内のテキストを選択できます。

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

選択したテキストの親ノード/要素を取得する方法がわかりません。たとえば、次のようなテキストを選択している場合

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

ストロングノードまたはH1要素も含めるにはどうすればよいですか?

4

1 に答える 1

8

sel.anchorNode.parentNode選択範囲の一方の端のみを含むノードの親ノードを取得します。選択全体の最も内側に含まれる要素を取得するには、選択から範囲を取得し、その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;
    }
}
于 2012-05-12T10:35:11.557 に答える