WYSIWYG中的自定义div的问题,跨浏览器

时间:2013-10-20 23:16:25

标签: javascript wysiwyg contenteditable

我正在使用WYSIWYG编辑器(自定义其他人的代码)并遇到了一些我似乎无法克服的问题。

到目前为止,我已经能够让大多数自定义div工作了,但是我遇到了一些问题:

问题1:如果光标位于div元素之前,我可以按删除并开始删除div的内容而不删除实际的div本身。这就是元素在WYSIWYG中的外观,例如:

enter image description here

但是当光标在元素之前按下删除后,我得到以下内容:

enter image description here

如何检查下一个元素是否为此自定义div并取消删除键?

问题2:我也可以在一个元素之后按退格键,这会导致元素出现在其中的任何文本,如下所示:

enter image description here

如何检查上一个元素是否是我的自定义div并取消退格键?

问题3:当在某个部分内部(此处放置'内容'文本)时,我使用的是具有属性contenteditable="true"的div。每当我在此div中按“enter”时,都会创建一个新的<div>标记,而不是换行标记(<br>)。如何强制创建换行符标签而不是div元素? 我已经在stackoverflow上看了很多,并且尚未找到适合跨浏览器问题的解决方案。

1 个答案:

答案 0 :(得分:1)

免责声明:我是CKEditor核心开发人员。

如果您想自定义此方法,有三种方法:

  1. 您可以花几个月(或更长时间)了解有关可信,范围,选择和所有内容并尝试实施自定义处理程序。你当然可以只花一周或一个月,但结果不会很好,相信我。
  2. 您可以选择优质的现有WYSIWYG编辑器。
  3. 您可以降低对预期行为的期望;)。
  4. 现在,如果您决定使用CKEditor,那么在最近发布的CKEditor 4.3 beta中会引入一个名为Widgets的新功能(4.3稳定版将在最长2-3周内发布)。据我所知,它可能对你的情况非常有帮助。查看Introduction to Widgets guide。非常简短 - 可以配置enter键在所谓的“嵌套可编辑”中的行为方式,以及保护自定义标记的完整性。