私はrangyライブラリを使用しており、次のように編集可能なコンテンツ内のテキストを選択できます。
var sel = rangy.getSelection();
alert(sel);
選択したテキストの親ノード/要素を取得する方法がわかりません。たとえば、次のようなテキストを選択している場合
<strong>My Text</strong>
or
<h1>My Title</h1>
ストロングノードまたはH1要素も含めるにはどうすればよいですか?
私はrangyライブラリを使用しており、次のように編集可能なコンテンツ内のテキストを選択できます。
var sel = rangy.getSelection();
alert(sel);
選択したテキストの親ノード/要素を取得する方法がわかりません。たとえば、次のようなテキストを選択している場合
<strong>My Text</strong>
or
<h1>My Title</h1>
ストロングノードまたはH1要素も含めるにはどうすればよいですか?
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;
}
}