HTML 文档中的富文本编辑器如何实现其富文本格式?

Posted

技术标签:

【中文标题】HTML 文档中的富文本编辑器如何实现其富文本格式?【英文标题】:How do Rich Text Editors in HTML documents achieve their rich text formatting? 【发布时间】:2010-12-21 09:33:44 【问题描述】:

您能否解释一下 textarea 中的文本如何在富文本编辑器中设置样式?我尝试在表单中设置文本样式,但它没有改变。

是识别用户输入的字符的JS吗?这是怎么做到的?


编辑:

经过一番研究(Google 规则!),我发现了一些极好的信息。对于其他可能感兴趣的人,这些链接对我很有帮助:

http://www.webreference.com/programming/javascript/gr/column11/ http://www.webreference.com/programming/javascript/gr/column12/

【问题讨论】:

你能给我们一些代码吗? joerage:只问了 4 个问题……虽然肯定不好,但与那些不接受数十或数百个问题答案的人相比,这仍然是一种不同的事情。 @Johannnes:它更像是问了 12 个问题。如果你算上他提供的唯一答案,实际上是另一个问题,那就是 13。 没有。嗯,有什么概念吗?好吧,随便。我也要学习这个概念吗? 措辞不当的问题和 OP 的不当态度:我投票结束(一旦问题被改写,我会立即撤销)。 【参考方案1】:

通常,富文本编辑器将提供一个变量来指定样式表。然后,该样式表将被加载并应用于文本区域(如果不是全部,大多数富文本编辑器使用 IFRAME 在,显然主文档中指定的样式将不适用于它。)

【讨论】:

据了解,JS 将 textarea 替换为 IFRAME...是 iframe 类型的 textarea 吗? 在 IFRAME 中是一个单独文档的窗口。 textarea 本质上是没有意义的,它只是用作数据容器,以便可以通过表单保存编辑的内容。你用的是什么所见即所得的编辑器? 我不使用任何...那么,是识别用户输入的字符的JS吗?效果如何?【参考方案2】:

我认为答案是您所看到的通常不是实际的<textarea>。这是一个<div><span>,看起来像一个文本区域。 常规的 HTML 文本区域没有单独的文本格式。

“富文本编辑器”将具有使用常规 html 标记(<strong><em> 等)修改 span/div 内容的控件,以模拟成熟的富文本编辑器

【讨论】:

很难知道 TinyMCE 做了什么,但在这个例子中它使用了一个文本区域:tinymce.moxiecode.com/examples/full.php 另一种常见的技术是在 textarea 的顶部放置一个 iframe。【参考方案3】:

当您将 HTML 发送给用户时,它是 textarea,但当它可以启动时,编辑器将其替换为 div

这样,代码会优雅地降级:使用不受支持的 Web 浏览器或禁用 JavaScript 的用户仍然可以编辑 textarea 中的文本,而所有其他用户都可以获得一个不错的富文本编辑器。

【讨论】:

【参考方案4】:

基本上,TEXTAREA 内容用作 IFRAME 的 HTML 源代码。

【讨论】:

以上是关于HTML 文档中的富文本编辑器如何实现其富文本格式?的主要内容,如果未能解决你的问题,请参考以下文章

深入理解javascript中的富文本编辑

如何实现一个 Android 端的富文本编辑器

文本视图中的富文本

如何在 selenium webdriver 的富文本编辑器中输入文本?

WinForm窗体怎么实现富文本控件就像ASP那样的富文本控件

TinyMCE 一款非常不错的富文本编辑器