HTMLドキュメントでテキストを選択すると、1つのDOM要素内から別の要素に開始することができます。 DOM APIを使用すると、選択したテキストの範囲、選択したすべてのDOM要素の親要素(使用しているブラウザに基づいてcommonAncestorContainerまたはparentElement()を使用)を取得することができます。しかし、私が知っている方法は、選択されたテキストの要素を含むすべての要素をリストすることができますが、それらをすべて含む単一の親要素を取得することはできません。この親の中で選択されていない他の兄弟が存在する可能性があるので、親を使用し、子ノードを横断することはしません。選択したテキストのすべてのDOMブロック要素を取得
したがって、選択したテキストを含むこれらの要素をすべて取得できる方法はありますか?私は主にブロック要素(p、h1、h2、h3、...など)を取得することに興味がありますが、すべての要素を取得する方法がある場合は、それらを通過し、欲しいです。アイデアや提案は大歓迎です。
ありがとうございます。
あなたが言ったように完璧な解決策ではありませんが、それは私にそれを行う方法のアイデアを与えました。したがって、私はこれを私の必要性に最も正しい答えとして選択しました。本当にこれを感謝します。 – cria
これはまともな答えですが、Internet Explorer <9では動作しません。selection.getRangeAt(0);も呼び出す前に選択が存在することを確認することができます(選択の 'rangeCount'プロパティを使うのが最も簡単です)。 –
私が言及しなかったたくさんの落とし穴があります。これはちょうど正しい方向に向かうことです。あなたのライブラリは実際にそれを扱うために22kの非圧縮javascriptを必要とし、もし私がそれを必要とするならば、私はそれを使います。 –