Javascript文字处理器/编辑器(或Google Docs架构)

时间:2012-01-06 01:48:56

标签: javascript html google-docs

我认为将自己的文本编辑器滚动到谷歌文档会很有趣,纯粹是为了好奇(当然不需要重新发明轮子)。我一直想知道像Docs和Zoho Writer这样的应用程序如何能够获得高级布局,例如在不同页面上分隔文本,或者将标题与内容保持在一起,你知道,像TinyMCEnicedit这样的编辑赢了做。我知道使用designMode和contenteditable,我听说人们使用canvas,但是有更好的方法吗?像MS或LibreOffice这样的桌面办公套件如何管理? 特别是在编辑内容时将内容拆分为离散页面?

另外,有人知道新版Google文档的工作原理吗?它似乎没有使用contenteditable(Zoho使用designMode),也没有使用canvas。根据我的发现,它只是<div> s的非常深层次的结构。

1 个答案:

答案 0 :(得分:2)

你的“问题”有点宽泛,但我会尽力帮助你:

Google文档使用隐藏的iframe(不是display:none,只是用户无法真正看到它),其中包含可编辑内容的正文( .docs-texteventtarget-iframe );当你看到插入符号闪烁时,意味着可编辑的主体被聚焦,你在那里写的所有东西都被插入到DOM中(在清理特殊的HTML字符之后)

像我说的那样,Google Docs正在使用DOM修改(不是canvas或svg);即使插入符号有点div闪烁。

TinyMCE使用类似的技术,但使用输入字段(而不是内容可编辑的主体)