32

有几个(非常好的)用 Javascript 编写的富文本 Web 编辑器(例如 FCKeditor、YUI Texteditor 和许多其他)。

但是我找不到任何关于如何构建这样一个组件的教程。可以解释高级考虑因素(架构)和/或低级“关键”点的更多细节(即为什么大多数编辑器都使用 iFrame,如何处理键盘输入,如 Ctrl-B、Ctrl -C 选择文本时和未选择文本时等)

我的主要动机是好奇心。如果我今天必须开发这样的编辑器,我不知道从哪里开始。

有谁知道任何涵盖上述问题的教程(理想情况下,解释如何从头开始构建所见即所得编辑器的东西)?

4

1 回答 1

39

经过更多研究,我发现了以下内容。构建富文本编辑器的功能已经在浏览器中实现。IE 是第一个创建这样一个 API 的,Firefox 复制了它。

概述

要点是javascript对象“document”有一个名为designMode的属性,可以设置为“on”。这会将所有页面转换为类似 textarea 的组件。想象一下浏览器打开页面的方式与 MS-Word 相同:用户可以看到格式,但他也可以输入页面(通常浏览器以只读方式打开页面)。

window.document.designMode = "On";

由于上述影响所有网页,大多数编辑器使用 iFrame,因此可编辑区域只有 iFrame 具有它自己的文档对象。

最重要的是,有一个 API 可以让 JavaScript 轻松访问样式。这是暴露的抛出 execCommand() 方法。例如,您可以从 Javascript 调用

document.execCommand('bold', false, '');

并且选定的文本将变为粗体。

教程

我发现了以下内容:

一个简短的分步指南

Mozilla指南。它有我找到的最方便的 API 参考以及更多链接。

微软的指南。

于 2008-11-20T11:39:13.387 回答