这是我的 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 中)是在一个 LI 内还是跨越多个 LI。当我选择 LI 的一和二的全部,然后在控制台中输入以下document.selection.createRange().parentElement().innerHTML
内容时,只返回第二个 LI (HI 2 2 2 2 2 2) 的内容。
为什么 TextRange.parentElement 返回范围中的最终元素而不是整个范围的父元素?
文档说“如果文本范围跨越多个元素中的文本,则此方法返回包含所有元素的最小元素。” 我的最终目标是确定是否选择了多个 LI;我认为“检查 parentElement().nodeName.toUppercase === "LI"" 是否会这样做,但如果 parentElement() 没有返回 parentElement,我就不能这样做。