0

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

4

0 回答 0