删除时奇怪的浏览器行为,我该怎么做才能解决这个问题?

时间:2013-04-09 20:10:43

标签: javascript internet-explorer internet-explorer-8 contenteditable nicedit

TLDR
在IE8 http://jsbin.com/ucahor/1/edit#/ucahor/2/edit中打开它 单击空白行,然后立即按Backspace。删除2行 单击空白行,等待一秒钟,然后按Backspace。删除1行 我可以做些什么来解决这个问题吗?

全文
我正在尝试为我的Web应用程序创建最好的富文本编辑器。我已经NicEdit并添加了一堆功能。我正在使用nicedit,因为它是唯一一个满足我测试的9个要求的编辑器。

  • 适用于IE6
  • 可以从Word粘贴
  • 编号和项目符号
  • 纯Javascript(我们可以轻松修改)
  • 下载的文件数量很少
  • 可以设置光标位置
  • 可以全屏显示
  • 可以处理大文件(粘贴1500段)

我添加到NicEdit的实现中的一件事是为我的用户编写的常见报告插入标题。这个问题是我需要一种在标题之间有空行的方法。我无法使用<br/>代码,因为它们不能很好地插入列表而我无法使用<div>代码,因为Internet Explorer在内容可编辑div中存在div问题。

这使我使用<p>标记来指示新行。

但是,我不能只使用<p></p>,这是用户代理忽略空P标记的HTML标准。

目前我的用户正在使用<p>&nbsp;</p>,但这会使每行都缩进一个空格,新行没有空格。

我发现有一个Zero Width Space字符&#8203;可以让我的P代码被渲染,而且每行都没有空格!

我的新<p>&#8203;</p>效果很好,除非用户正在删除某行,第一个退格区似乎什么都不做。

所以我为了退格而绑定了我的keydown事件。它检查光标前的字符,如果它是我的Zero Width Space字符,我将其删除并让退格区继续正常。

这是有效的,除非您单击要删除的行并快速单击退格键。该操作导致删除2行。

您可以加载IE8并在此处试用。 http://jsbin.com/ucahor/1/edit#/ucahor/2/edit

0 个答案:

没有答案