これが私のHTMLです:
<ul contenteditable>
<li>Hi there 1</li>
<li>HI 2 2 2 2 2</li>
<ul><li>hi 3</li></ul> <!-- I know it's invalid, it's what document.execCommand('indent') yields -->
<li> hi 4 hi there people 4 here now </li>
</ul>
(来週はhttp://www.webdevout.net/test?06&rawで見ることができます)
現在選択されているテキスト(IE8)が1つのLI内にあるのか、複数のLIにまたがっているのかを判断しようとしています。LIの1と2全体を選択し、コンソールに次のように入力すると、2番目のLI(HI 2 2 2 2 2 2)のみdocument.selection.createRange().parentElement().innerHTML
の内容が返されます。
TextRange.parentElementが範囲全体の親ではなく、範囲の最後の要素を返すのはなぜですか?
ドキュメントには、「テキスト範囲が複数の要素のテキストにまたがる場合、このメソッドはすべての要素を囲む最小の要素を返します」と書かれています。私の最終的な目標は、複数のLIが選択されているかどうかを判断することです。「parentElement()。nodeName.toUppercase === "LI"」で実行できるかどうかを確認しましたが、parentElement()がparentElementを返さない場合は実行できません。