【发布时间】:2012-07-30 18:09:10
【问题描述】:
这是我的 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) 的内容。 p>
为什么 TextRange.parentElement 返回范围内的最后一个元素而不是整个范围的父级?
The docs 说“如果文本范围跨越多个元素中的文本,则此方法返回包含所有元素的最小元素。”我的最终目标是确定是否选择了多个 LI;我认为“检查 parentElement().nodeName.toUppercase === "LI"" 是否会这样做,但如果 parentElement() 没有返回 parentElement,我就不能这样做。
【问题讨论】:
-
请看我的回答,也许它会给你一些想法……:stackoverflow.com/questions/9537974/…
标签: internet-explorer internet-explorer-8 contenteditable textrange