写一个简单的自定义编辑器需要多长时间?

4

我所说的简单是指,具有以下按钮:

  1. 加粗
  2. 斜体
  3. 编号列表
  4. 项目符号列表
  5. 向左缩进
  6. 向右缩进
  7. 拼写检查(显然由现成的 JS 组件支持)

我所说的自定义是指:具有自定义图标 - 因此实际上就是自定义设计。

不使用框架,从头编写,轻量级,与主要浏览器兼容。

这是 Web 应用程序的主要组件之一,因此它必须超级轻便,这就是为什么我不想使用框架的原因。


2
我不明白为什么人们要对此进行负评。 - Bjorn
3
Apphacker,我注意到那些句子结构较弱、由低声望用户提出的不寻常问题往往会被踩。这些问题更难解析和回答,会激怒人们。这有道理吗? - willc2
4个回答

14

如果你不只针对一个浏览器,编辑器组件极其复杂,跨浏览器兼容性也很难实现。除非你想学习,否则没有理由自己动手。

使用现成的可自定义的编辑器之一: TinyMCE, FCKeditor, WysiHat, 其他


真的这么难吗?你有没有尝试过复制、粘贴和自定义的方法,例如http://www.bewebmaster.com/55.php?我对那些实际上尝试过不使用JS平台/框架编写它的人的答案感兴趣。 - rocky
1
你知道你链接的教程完全忽略了Safari和Konquerer吗?看看initializeEditor函数中的“//如果浏览器不是Safari或Konqueror,则启用designMode。”,还有在displayEditor中再次忽略它们。如果你问我,那就不是跨浏览器了。 - helloandre
修复Safari有什么问题吗?修复它比使用更重的东西要好...而且谁会使用Konquerer?我只关心主流浏览器。 - rocky
@rocky Konquerer/KHTML是Webkit(Safari和Chrome)的基础,因此支持它可能是一个好主意。特别是现在谷歌正在电视上推广Chrome。 - Tracker1

3

编写一款可以跨平台使用的编辑器可能会很困难,但是在此过程中您应该创建自己的框架,因为这是一个大型项目。

如果您只需要自定义图标,则取决于制作它们所需的时间。但是,获取一些基本功能并不那么困难,如果您知道该怎么做,工作时间可能少于40小时。

在Unix操作系统下,编写自己的shell曾经是一种成年礼,在JavaScript中编写自己的编辑器也许是如此 :)

当问题变得棘手时,是我拥有:

<b>some text</b><i>more text</i>

如果我决定从这段文本中删除标签,那么如何修复它将变得棘手。

如果您只想使用CSS,则问题会更加严重,因为您需要对来自span标签的文本进行分组,并修复CSS类,而用户仍在继续进行更改。

我目前正在处理这个问题,因为我希望拥有一个适用于XHTML2.0的编辑器,这不是一个微不足道的问题,比在桌面应用程序中执行要困难得多。

我建议首先让它在Firefox 3和Safari上运行,一旦它运行正常,再回头添加代码以使其在IE8上运行,并且如果您想要IE7,因为微软现在正在将IE8推出为关键更新。


在我看来,这是一个糟糕的建议 - 帖子作者显然不需要一个真正的自定义编辑器,只需要一些微小的定制。着手创建一个编辑器将是一个坏主意和不必要的琐事。 - Sai
1
问题是如何去做,而不是是否是个好主意。在我的情况下,tinyMCE 无法与 XHTML 2.0 兼容,所以我唯一的选择就是自己编写,但是会有困难,我试图表达出来。此外,编写自己的 shell 没有任何意义,除了展示技能,也许编写编辑器或框架将是同样的成长历程。 - James Black

3

不要这样做。

去获取其他东西(Jason提到的任何一个,或者例如SO自己使用的WMD)。替换它的图片。结束。

如果你没有非常好的理由(功能上)而只是外观原因,你真的不想编写自己的编辑器。


好的理由是尽可能使其轻量化,因为我正在构建希望数百万人使用的东西 :) - rocky
  1. 数百万人已经使用其他编辑器而没有任何问题。
  2. 有从简单到完整的HTML编辑器组件可供选择。
  3. 您是否将编辑器JS作为Web应用程序的瓶颈进行了分析?如果没有,那么“过早优化是万恶之源”。
  4. 很可能,数百万人不会使用您的Web应用程序。但是,如果他们这样做,编辑器组件将是您最不用担心的问题。
  5. JS代码无论如何都会被缓存。
  6. 所有现代浏览器(IE8、Safari、Mozilla、Chrome)都具有高效的JS引擎。
- Hejazzman
编辑器是我网站应用程序中最重要的两个组件之一,因此它必须是轻量级的,这让我有些担心。那么,你推荐哪个轻量级、跨浏览器的编辑器组件呢? - rocky
我使用并喜欢WMD。FYI,它有两个版本 - 一个在github上(已反混淆),另一个在WMD的网站上。但你使用哪个取决于你的需求;底层标记语言是什么?你需要哪些功能?等等? - Sai

-3
阅读emacs教程的前几章,你会发现没有什么像“简单”的编辑器。但是谷歌会给你很多易于定制的编辑器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接