0

我有一个 contenteditable div 元素,其中包含一个使用<ol>. 如果用户选择了不是 a 的其他地方,则不会创建<li><li>项目。如果用户在创建列表后按两次回车,则不会<li>创建任何项目。

如何强制 div 元素中的所有行成为一个<li>项目?

我没有小提琴帐户,但是如果您将 contenteditable 标记添加到此处的示例中,您可以在操作中查看/测试它http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_lists

4

1 回答 1

0

的效果contenteditable因浏览器而异,但是当列表位于可编辑区域内而不是声明为可编辑的元素时,问题中描述的行为很常见。原因似乎是由于封闭元素是可编辑的,因此实施者认为应该有一种方法可以退出列表,例如在其后添加内容。

如果您更改单个 contenteditable 块,例如

<div contenteditable>
some stuff
<ol><li>test</li></ol>
some other stuff
</div>

到三个这样的街区,

<div contenteditable>
some stuff
</div>
<ol contenteditable><li>test</li></ol>
<div contenteditable>
some other stuff
</div>

然后行为发生变化:在列表中按两次 Enter 只会在那里添加一个空项目。

但是有一个问题<ol contenteditable>:它似乎让 IE 9 省略了列表编号(或ul列表项目符号),没有明显的方法让它放在那里。(编辑:这只发生在 Quirks 模式下。但是这个错误可能存在于早期的 IE 版本中以不同的模式。我建议contenteditable在包装元素上使用,而不是ol直接使用列表元素。)

于 2012-06-13T06:30:42.190 回答