可信的标签延续

时间:2013-12-26 23:45:17

标签: javascript html html5 contenteditable

在问题出现之前发生的小介绍:

在包含html标记的contenteditable中键入文本时,如果您位于标记的右侧,则会继续插入标记内。例如,如果我有这样的文字:

The <b>quick</b> fox jumped over the lazy dog.

它会像这样呈现

快速 |狐狸跳过懒狗。

我的光标位于管道位置,直接位于 quick 之后。如果我输入 brown ,我会得到

The <b>quick brown</b> fox jumped over the lazy dog. 

快速棕色 |狐狸跳过懒狗。

示例:http://jsfiddle.net/mBzvs/

我的问题是,如何删除其他标记(例如span)的标记延续功能?我想保留<b>代码,但我不希望<span>代码发生这种情况。

2 个答案:

答案 0 :(得分:2)

Chrome和其他WebKit浏览器始终将插入符号放在<b>元素的末尾,而不是下一个文本节点的开头。例如,请参阅this WebKit bugthis one也是{{3}}。 Firefox为您提供更多控制权。

所有解决方案选项都不好。请参阅链接的WebKit错误以获取一些建议。

答案 1 :(得分:1)

在某些人找到更好的解决方案之前,我建议您将contenteditable="false"设置为<b>代码。

The <b contenteditable="false">quick</b> fox jumped over the lazy dog

自:

  1. 您可能希望<b>标记中的内容不可编辑。如果没有,当他开始在该标签的最后一个字符旁边打字时,很难说出人们想要什么。
  2. 很容易满足您的第二个要求:
    我想保留b标签,但我不希望这种情况发生在span标签上。
  3. 注意:您需要IE的其他代码。见contenteditable=false inside contenteditable=true block is still editable in IE8