我正在尝试使用div创建一个WYSIWYG编辑器,就像Google Docs一样(据我所知)。我知道编辑器还有其他更简单的解决方案,但都有一个共同点:由于Javascript execCommand()函数,它们输出了可怕的HTML。我真的需要它输出干净的HTML(以及跨浏览器的相同HTML),因此我正在考虑使用常规div和一些Javascript(记录点击和按键等)编写我自己的编辑器。然而,在我这样做之前,我有几个问题:
非常感谢!
编辑:我认为我应该更加清楚:我不认为现有的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">
)。因为没有办法改变所有这些奇怪的行为,所以我很难让网站看起来一致。
这就是我考虑编写自己的替代方案的原因:跨浏览器兼容性和一致性......
答案 0 :(得分:1)
答案 1 :(得分:1)
从头开始创建编辑器是一项艰巨的任务,因为浏览器怪异的数量和浏览器内编辑的错误。我已经多次为各种利基项目做过。我的建议是从TinyMCE或CKEditor开始作为基础并扩展它们。两次迭代都经历了令人难以置信的开发时间,以使它们像现在一样好。试着看看他们的bug追踪器,了解他们必须应对的问题。两者都有不错的扩展选项,因此您可以编写自己的格式化命令来替换document.execCommand()
,并且可以在工具栏和上下文菜单中添加按钮/工具。
自我提升提醒:未来的另一个选择是使用我正在为我的Rangy库工作的命令模块。它离完成有一段距离,但最初会替换document.execCommand()
提供的内联格式化命令,并允许控制它产生的标签/ CSS。这里粗略的早期演示:http://rangy.googlecode.com/svn/branches/1point2/demos/commands.html
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:-1)
您是否已尝试TinyMCE? 您可以通过不同的参数或现有插件完全控制输出,也可以编写自己的插件..