44

嘿,我想知道创建富文本编辑器背后的概念是什么。我的意思是如何创建富文本编辑器。我想学习实现。

PS:请不要建议使用 YUI 或任何其他内置库。我想做一个我自己的。

那么背后的概念是什么?

谢谢 :)

4

2 回答 2

61

最简单的方法如下。它被TinyMCECKEditor和许多其他人使用。有很多变化:特别是,如果您正在创建一个代码编辑器,您可以使用 textareas 和等宽字体来做一些巧妙的技巧。

  • 动态创建 iframe 并将可编辑内容放置在该 iframe 的文档中
  • 通过将 iframe 的文档designMode属性设置为“on”或将其<body>元素的contentEditable属性设置为 true,将 iframe 设置为可编辑。请注意, Firefox 的designMode支持早contenteditable于 Firefox,因此错误更少。
  • 在主文档中的某个合理位置(例如可编辑 iframe 的正上方)添加按钮(例如粗体、斜体、插入图像等),这些按钮作用于 iframe 中的选定内容。所有浏览器都提供了一种execCommand()方法(例如,参见MSDNMDN)来执行许多这些操作,尽管它们的工作方式和产生的标记存在一些差异。

这就是它的工作原理。大多数编辑器执行的许多其他复杂的事情并不是很明显,部分是为了消除浏览器之间的许多差异,部分是为了提供内置浏览器命令未涵盖的额外功能。做对是一件非常复杂和困难的事情,需要高度的专业知识和承诺,不能掉以轻心。

于 2011-05-15T11:47:43.443 回答
1

我不建议您查看其他人使用,但我建议您查看jWYSIWYG以了解它是如何在 jQuery 中编码的。

于 2011-05-15T08:12:12.220 回答