我对HTML中的contenteditable
元素有一个奇怪的例子。我们有一个富文本编辑器,客户可以将预制模板(由我们)加载到其中,然后可以根据需要修改该模板(主要是)。
我们模板的某些部分已被标记为不能直接编辑,但仍可以删除等等。但是,当一个这样的元素是一行上的第一个元素(直接在{{1之后)时似乎存在问题标签),用户点击上面一行的<br/>
。由于其DEL
,浏览器似乎不会删除contenteditable=false
,而是删除整个不可编辑的范围。
示例HTML就像这样
<br/>
如果用户将光标放在<div contenteditable=true>
<span>blah blah blah</span><br/>
<span contenteditable="false">You cant edit this value directly</span>
</div>
之后,并点击blah blah blah
,则会删除整个下一个可编辑内容,而不是换行符。
有没有办法,javascript或其他方式来解决这个问题?
我试图检测光标位置(使用rangy),插入临时空间等,但我似乎无法让它拥有所需的行为,这就是不可编辑的标签被提起来了到上一行。
我们仅限编辑器使用Chrome,因此无需担心IE或FF。
答案 0 :(得分:0)
制作每个范围contenteditable
,然后用户将无法删除您不想编辑的范围,并摆脱可编辑的div。
这是我的JSFiddle版本:http://jsfiddle.net/howderek/HgRsF/2/
答案 1 :(得分:0)
问题是从2012年开始,从那时起,此问题已得到解决,嵌套的contenteditable
标记按预期工作。仍然存在一些问题,例如this bug,但总体而言,该功能应该可用。