为什么Flash/Silverlight/其他技术中没有所见即所得的富文本编辑器?

8

还是有的吗?

就桌面软件开发者而言(与网络开发者相比),如Flash或Silverlight等丰富的Web应用平台似乎更适合于制作Web所见即所得的文本编辑器。它们能够进行更复杂的输入/输出、数据表示等操作,而且在浏览器和平台上都是一致的(至少Flash似乎是这样的,虽然Silverlight和Moonlight可能不行)。

尽管如此,开发者们仍然喜欢使用Javascript / DOM / HTML / CSS等技术,尽管它们存在着不兼容性、差异,并且需要辛勤努力地解决每一个问题,并使用大量的hack来让这些技术实现他们原本可能从未能够实现的功能。

有一些普遍接受的理由说明为什么不应该在网站上使用Flash,以及普遍接受的例外情况:嵌入式视频播放器。那么富文本编辑器有何不同呢?“Flash控件处于其独立的沙盒中”-因此,所见即所得的编辑器也是如此;“Flash控件的文本无法被搜索引擎索引”-反正谁关心编辑器中不断变化的未保存内容是否被索引;“并不是所有用户都可能安装了Flash”-因此,也不是所有人都启用了Javascript。

那么,问题来了:相对于使用Flash实现WYSIWYG编辑器,选择Javascript的优势是什么?反之,选择其他技术有哪些缺点?

9个回答

3
JavaScript实现的RTE编辑器比Flash编辑器的主要优点有:
  • 不需要Flash播放器
  • 大多数人没有关闭JavaScript
  • 它们通常更丰富,具有更好的功能
  • 可以提供嵌入表格、图像和视频等其他功能
  • 它们生成HTML输出,可以直接用作Web内容

你想自己构建这个编辑器吗?因为一般来说,今天在JavaScript中可用的所见即所得编辑器选择非常不错。例如,请查看:fckeditortinymce。它们都非常出色,并且随着每个版本的发布而不断改进,可以应用于广泛的场景。

在大多数现代浏览器中,通过designmode/contenteditable divs和iframes可以很好地支持构建这些工具。Flex 3带有一个仅仅还行的RichTextEditor,可以完成工作,但并不是很出色。


关于HTML的生成 - 它真的准备好了吗?比如说,用IE编写的RTE的HTML输出是否总是与FF或Opera兼容? - Headcrab
迄今为止,我的经验主要是使用FCKeditor,它的输出HTML在所有当前浏览器上都能正确呈现。FCKeditor声称甚至可以在IE5.5上工作,但我不会使用早于IE6的版本。 - Scott Evernden
好的,他们也已经在HTML输出方面进行了工作。 至于我的动机,我试图制作一个错误标记系统,模仿老师批改学生的作业,用红墨水打标记。这是一个非常早期的原型:http://blog1.nuigurumi.webfactional.com/entry_id=0&action=show(仅适用于FF,在鼠标上选择一些文本以查看它的工作原理)。 - Headcrab

3
我认为主要原因是使用JavaScript(designMode)在浏览器中进行丰富的HTML编辑有一个现成的基础。这始于Microsoft在IE 5.5中(据我所知)并随后被Mozilla/Firefox、Opera和Safari采用。浏览器会负责维护HTML DOM树,允许您对其进行导航和修改等操作。您可以在浏览器中创建一个基本的(虽然非常简陋但仍然可行的)HTML所见即所得编辑器,几乎不需要任何JavaScript代码。然后,您可以在此基础上构建功能(这是大多数现代JavaScript所见即所得编辑器所做的)。
在Flash/Silverlight中,开发人员必须从头开始实现所有这些内容。在这个领域与Microsoft/Mozilla/Opera等团队竞争是困难的。

2

2

请参考开源项目ClipFlair中包含的SilverText组件。它基于Microsoft的示例应用程序,但被制作为一个组件并进行了改进。 - George Birbilis

1
JavaScript编辑器的主要优点在于,JavaScript提供了更多创建高级HTML元素(表格、水平线、有序列表和表单元素)的可能性。然而,大多数这些编辑器都是使用designmode和contenteditable iframes创建的。这意味着实际的代码生成是由浏览器而不是JavaScript完成的。每个浏览器可能会生成不同的HTML,这可能是不需要的。
Flash编辑器的功能较少,需要Flash,但可能是Flash网站的完美解决方案。JavaScript编辑器中的HTML差异可能非常令人恼火,而Flash-HTML不支持的功能不应该出现在JavaScript编辑器中。Flash还会生成其他在HTML中未使用的标签,例如:<textformat>标签仅用于Flash-HTML/HTML文本。
我曾经遇到过这样的问题,找不到一个可以生成所有可能的Flash-HTML而又没有JavaScript编辑器问题的编辑器。所以我自己创建了一个,可以在以下链接找到:
http://www.flashcomponents.net/component/hcs-rich-text-editor.html
它可以生成Flash-HTML,并且如果需要,也可以生成在任何浏览器中没有差异的有效(x)HTML。
简而言之,对于非基于Flash的网站,您可能需要使用JavaScript编辑器,因为它具有更多的可能性。 对于Flash网站,您需要一个基于Flash的富文本编辑器,以生成带有特殊标记(如)的Flash-HTML代码。

1

JavaScript RTE将成为Web标准,因为contentEditable在HTML 5 W3规范中。目前JavaScript RTE的方法是在文档属性中设置designMode为“on”。这样做的问题是整个文档都变得可编辑,因此大多数JavaScript RTE通过iFrame加载编辑器,从而允许iFrame的文档将designMode设置为“on”,而不是父文档。

当前可用的JavaScript RTE的缺点是修改插入图像的用户界面非常复杂(如果这对您很重要)。我个人不喜欢很多内置的界面,但据说如果你花足够的时间阅读文档,你可以随心所欲地修改它。例如,看看TinyMCE演示中的插入图像功能,然后启动WordPress并查看他们如何修改它。(WordPress使用TinyMCE)。

我没有进行任何测试,但在ActionScript文本区域中输入似乎更慢。我遇到的另一个问题是在文章中添加图像并移动它们的能力。即使在Adobe AIR中,它也使用WebKit渲染引擎,因此我尝试使用JavaScript制作RTE,在Safari浏览器上运行良好(也使用WebKit),但在通过AIR加载时表现不同。

总的来说,没有很多真正好的解决方案,这与contentEditable在大多数浏览器中尚未成为实现标准以及当前可用的RTE的过于复杂的脚本有很大关系。

对于JavaScript RTE,请参见:

TinyMCE、FCKEditor(CKEditor)、YUI 2的编辑器等,如果您想自己编写,请查找有关execCommand()的教程,它基本上是修改所选元素或将元素插入contentEditable区域的JavaScript方法。

至于Flash...我不知道,没有很多好的实现,即使Flex文本编辑器也有点基础和有限。主要缺点是对于两个平台都很容易修改和插入图像,因为像加粗文本或斜体字这样的基本操作很简单。


1

从技术上讲,并没有什么阻止您执行此任务,因为大部分基本的 RTF 能力(即视觉能力)已经具备。然而,也存在一些限制,例如自动图像/文本重新排列(即如果您分配了一个图像并希望文本环绕它,则需要进行数学+字符串+正则表达式操作。并不容易。

除了呈现窗口本身(工具栏等),您也可以使用 Silverlight 处理其他所有需求。这将使您能够利用所见即所得窗口(它实际上是在利用浏览器渲染引擎本身)和 Silverlight 来完成所有其他需求。

我们正在研究如何在未来版本中实现此功能,这样它就不会成为耳聋的消息。

Scott Barnes / 丰富平台产品经理 / 微软。


0

0

你在网上找到的大多数JavaScript编写的程序的主要原因是经济性,大多数需要用户文本输入的网站(如博客、论坛或stackoverflow)都是用HTML / JavaScript构建的。因此,当你有能力的JS程序员构建99%的网站时,为什么要引入Flash程序员来构建另外1%。

但这并不意味着它们不存在!在更受欢迎的库存Flash网站之一上进行快速搜索就会发现3个:

RTE1 | RTE2 | RTE3

而这只是在FlashDen上。搜索FlashComponents.net或UltraShock.com,甚至只是在Google上搜索,我保证你会发现更多可供出售或免费下载的内容。


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