使用div的在线WYSIWYG编辑器

时间:2011-07-19 20:31:28

标签: javascript html xhtml wysiwyg

我正在尝试使用div创建一个WYSIWYG编辑器,就像Google Docs一样(据我所知)。我知道编辑器还有其他更简单的解决方案,但都有一个共同点:由于Javascript execCommand()函数,它们输出了可怕的HTML。我真的需要它输出干净的HTML(以及跨浏览器的相同HTML),因此我正在考虑使用常规div和一些Javascript(记录点击和按键等)编写我自己的编辑器。然而,在我这样做之前,我有几个问题:

  • 我正在寻找的编辑器(在浏览器中输出相同的,干净的HTML)是否已经存在?
  • 我错了可以写这个吗?

非常感谢!

编辑:我认为我应该更加清楚:我不认为现有的WYSIWYG编辑器(如TinyMCE或CKEditor)是一个选项,因为(如果我错了请纠正我)他们使用Javascript execCommand( )功能。这(特别是与设计模式中的iFrame结合使用)在不同的浏览器中输出不同的,不合逻辑的HTML。例如:在Safari中进行简单输入会导致它创建div,而不是添加<br />标记或创建新段落(<p>)。此外:将文本设置为粗体会导致Mozilla添加<span style="font-weight: bold">,Internet Explorer和Opera以添加<strong>和Safari以添加<b>标记。更不用说一些浏览器通过将其名称添加到标签来获取技巧(Safari我在看着你,我不喜欢<span class="Apple-style-span">)。因为没有办法改变所有这些奇怪的行为,所以我很难让网站看起来一致。

这就是我考虑编写自己的替代方案的原因:跨浏览器兼容性和一致性......

5 个答案:

答案 0 :(得分:1)

不要这样做。高层WYSIWYG编辑背后有开发团队,他们已经在开发中内置了工作流来处理跨浏览器测试。

看看

答案 1 :(得分:1)

从头开始创建编辑器是一项艰巨的任务,因为浏览器怪异的数量和浏览器内编辑的错误。我已经多次为各种利基项目做过。我的建议是从TinyMCE或CKEditor开始作为基础并扩展它们。两次迭代都经历了令人难以置信的开发时间,以使它们像现在一样好。试着看看他们的bug追踪器,了解他们必须应对的问题。两者都有不错的扩展选项,因此您可以编写自己的格式化命令来替换document.execCommand(),并且可以在工具栏和上下文菜单中添加按钮/工具。

自我提升提醒:未来的另一个选择是使用我正在为我的Rangy库工作的命令模块。它离完成有一段距离,但最初会替换document.execCommand()提供的内联格式化命令,并允许控制它产生的标签/ CSS。这里粗略的早期演示:http://rangy.googlecode.com/svn/branches/1point2/demos/commands.html

答案 2 :(得分:0)

    为canvas标记构建的
  1. http://280slides.com/
  2. 如果你足够顽固,一切皆有可能。

答案 3 :(得分:0)

我们看到的两个是:

http://tinymce.moxiecode.com/

http://ckeditor.com/

两者都完全符合我们的要求,但最终我们选择了商业CKeditor。

答案 4 :(得分:-1)

您是否已尝试TinyMCE? 您可以通过不同的参数或现有插件完全控制输出,也可以编写自己的插件..