2

简介
我正在创建一个自定义的所见即所得/富文本编辑器 (RTE),因为我发现的那些在简单性和自定义方面没有满足我的需求。
我看过:
- CKEditor
- TinyMCE
- 等等

情况
我有一个 Textarea 和一个 Iframe。Textarea 保存数据库中的信息。在$(window).load (function () {Textarea 将隐藏,其内容将被复制到 Iframe 中designMode = "on";

NewLines
当你按下“Enter”时,除了换行符之外,一切都很好。在每个浏览器中,结果都不同:
- <p>: Opera & IE
- <div>: Safari & Chrome
- <br>: Firefox

这不是一个可靠的结果,所以我决定当有人点击 Enter a 时<br>必须放置到位。因此,当有人想要一个新的段落时,他会按 Enter 两次,然后<br>放置两个。

因此,我使用 keyCode 13 (Enter) 构建了一个 KeyDown 事件。
在函数中,我通过以下方式阻止了默认操作:
- event.preventDefault ();IE9+、FF、CHROME、SAFARI 和 OPERA
- event.returnValue = false;IE8-

然后插入用于添加自定义的代码<br>
- pasteHTMLIE
- insertHTMLFF、CHROME、SAFARI 和 OPERA

JSFiddle
上面的两个代码都可以在 IE7/8/9、Firefox、Chrome、Opera 和 Safari 中运行,但是会出现一些奇怪的结果。要自己查看错误,我在这里创建了一个 JSFiddle:http: //jsfiddle.net/RickS/RZ4Re/

错误 参见上面的 JSFiddle
[1:对所有浏览器的影响] 在“Two”之后点击“Enter”,没有任何反应,但在“One”之后点击“Enter”,您会看到代码有效。我发现当光标放在块元素之前时,<ul> <ol>或者不会放置到位。 该错误不会出现在内联元素上。 期望的结果:在块元素之前放置一个。<p><br>

<br>

[2:对 IE7/8/9 的影响] 在“三”(列表项)后按“回车”,“四”消失。输入一些内容并再次按“Enter”。现在“五”消失了。
还有奇怪的部分:点击“一”这个词。“四”和“五”再次出现,从未被删除。期望的结果:当您创建另一个列表项时,列表下方的内容仍然可见。

搜索
我已经研究这个问题一个多星期了,但似乎无法在任何地方找到解决方案。
在 Stack Overflow 上,我认为这篇文章接近但没有解决我的问题:通过在 contenteditable 上按 Enter 来制作 <br> 而不是 <div></div>

解决方案需要在 IE9(如果可能的话,还有 7 和 8)、Firefox、Chrome、Safari 和 Opera 中跨浏览器工作。

我希望有人可以帮助我解决这个问题。
所以在前面:非常感谢你!

瑞克

4

0 回答 0