我有一个contenteditable div元素,其中包含使用<ol>
的列表。如果用户选择了不是<li>
的其他位置,则不会创建新的<li>
项。如果用户在创建列表后按两次Enter键,则不会创建<li>
项。
如何强制div元素中的所有行都是<li>
项?
我没有小提琴帐户,但是如果你在这里的例子中添加了contenteditable标签,你可以看到/测试它的行动http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_lists
答案 0 :(得分:0)
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
列表项目符号),没有明显的方法将其放在那里。 (编辑:这只发生在怪癖模式。但是这个错误可能出现在早期IE版本的不同模式中。我建议在包装元素上使用contenteditable
而不是直接列出像ol
这样的元素。)< / p>