8

我刚刚阅读了 Nicholas Zakas 的 Professional JavaScript for Web Developers 中关于浏览器中富文本编辑的部分。它说有两种方法可以实现富文本编辑:

  1. designMode属性设置为的iframeon
  2. 或具有contenteditable属性的元素

我从这些信息中得出的结论是,这两种技术都存在很多跨浏览器的不一致,因此没有一种是真正可靠的解决方案。

检查 Google Doc 的标记,我看到的只是一堆嵌套div的 s。

所以,我很好奇,谷歌确定了哪种技术最适合实现富文本编辑?

4

1 回答 1

13

Google Docs 既不使用designMode也不使用contentEditable. 它有自己的用 Javascript 编写的渲染引擎。从他们关于它的博客文章中

为了解决这些问题,新的 Google 文档编辑器不使用浏览器来处理可编辑的文本。我们完全用 JavaScript 编写了一个全新的编辑界面和布局引擎。

到目前为止,编辑器所做的最困难的事情是找出在哪里绘制文本。为此,我们构建了一个新的布局引擎。这是新引擎如何工作的示例:假设您键入字母“a”。我们注意到您按下了“a”键并在屏幕外绘制了一个“a”作为响应。然后我们测量那个“a”的宽度和高度,将这些测量值与光标的 x 和 y 位置结合起来,然后将“a”放在屏幕上的正确位置。如果您在一个单词的中间,我们会在您的光标上方推动字符。如果您在行尾,编辑器会将您的单词移动到下一行,并将任何溢出推送到它之后的行。

于 2013-10-27T14:36:27.087 回答