2012-03-01 65 views
2

我想构建一个轻量级的在线文本编辑器,比如google doc,但是比这个轻得多。如何构建一个轻量级的在线文本编辑器?

我的意思是,我只是想实现以下三个功能:

  1. 输入/删除字符
  2. 创建/删除一个新行
  3. 缩进

但我我不太清楚如何建立它。

这是我的想法:

将每一行视为一个div。 监视键盘事件,当用户按下回车键,创建一个新的div

按照我的方法,我需要设置div的CONTENTEDITABLE =真 然而,在那之后,每当我打进去,在里面创建一个新行DIV。

那么,如何阻止呢? (它只能通过使用JavaScript解决?) 或者,有没有其他方式来实现我的目标?

+0

您可能想看看[CK Editor](http://ckeditor.com/),即使它提供了很多功能它也允许您配置这些选项,并让您只显示那些您需要的...关于亮度(我会留给你)看看它,看看它的光线是否足够。 – 2012-03-01 11:14:25

+0

为什么要重新发明轮子? http://bower.io/search/?q=editor – k0pernikus 2016-03-22 11:24:59

回答

2

只需使用event.preventDefault();像这样:

$(document).bind("keydown keypress", function(event) { 
    if (event.which == 13) { 
    event.preventDefault(); 
    // Your code here 
    } 
}); 
0

我会阅读键盘事件,并修改DOM以反映这些键盘更改。你会遇到的最大的问题是定位'caret'(垂直线)。查看这个SO问题正确地执行此操作 - >calculate-text-width-with-javascript

另一个替代方案是我使用的标记。它是一个更轻量级的解决方案,并带有内置的文本测量功能。谷歌关闭库有很多内置的支持 - >Closure Library,例如文本选择 - >Canvas Text

0

要小心让人们​​在你的网页上做到这一点 - 如果你没有正确逃避/监测输入,他们可以在页面本身造成严重破坏,从而阻止他们保存东西等。

大多数这些编辑器将其编辑器实现为嵌入式iframe。由于它是从同一端口,协议和主机提供的,因此您可以使用完整的脚本访问它。

因此,您可以在iframe中设置可编辑标签,并将所有控件保留在iframe之外。当他们点击一个控件时,你会在iframe中发生这种情况。

当他们保存时,您只需抓取iframe的div的内容。