为什么Flash / Silverlight / Whatever中没有WYSIWYG富文本编辑器?

时间:2009-04-15 05:52:01

标签: silverlight flash wysiwyg richtext

或者在那里?

从桌面软件开发人员的角度来看(可能与Web开发人员相反),丰富的Web应用程序平台(如Flash或Silverlight)看起来像是用于为Web执行WYSIWYG文本编辑器的更好工具。它们具有更复杂的输入/输出,数据表示等,并且它们在浏览器和平台上是一致的(好吧,可能还没有Silverlight和Moonlight,但至少Flash似乎是这样)。

尽管如此,开发人员仍然喜欢使用Javascript / DOM / HTML / CSS以及它们的所有不兼容性,差异,努力工作以解决每个特定的怪癖,并使用大量的黑客技术来使这些技术尽其所能,也许,从来没有应该能够做到。

有一些普遍接受的论点,为什么你不应该为网站使用Flash,以及普遍接受的例外:嵌入式视频播放器。富文本编辑器有何不同? “一个闪存控件存在于它隔离的沙箱中” - 所以,普遍地说,是一个WYSIWYG编辑器; “闪存控制的文本无法被搜索引擎索引” - 无论如何,谁关心索引编辑器中不断变化的未保存内容; “并非所有用户都可能安装了Flash” - 因此并非所有用户都可以启用Javascript。

所以,问题在于:选择Javascript over Flash实现WYSIWYG编辑器有什么好处?选择其他方式会有什么不利之处?

9 个答案:

答案 0 :(得分:3)

JavaScript实现的RTE编辑器相对于Flash的主要优点是:

  • 您不需要使用Flash播放器
  • 大多数人都没有关闭JavaScript
  • 他们通常更富有并且拥有 更好的能力
  • 嵌入式表等附加功能 可以提供图像和视频
  • 他们准备好HTML输出 用作网页内容

您是否希望自己构建此编辑器?因为 一般来说,今天在javascript中为所见即所得编辑器提供的选择非常好。检查例如:fckeditortinymce。它们都非常令人印象深刻并且每个版本都有所改进,可以应用于各种场景

在大多数现代浏览器中,通过designmode / contenteditable div和iframe提供相当好的支持来构建这些东西。 Flex 3只带有一个好的RichTextEditor,它可以完成这项工作,但并不是那么好。

答案 1 :(得分:3)

主要原因(我认为)是使用JavaScript(designMode)在浏览器中进行丰富的HTML编辑的现成基础。这是微软在IE 5.5中开始的(据我记得)然后由Mozilla / Firefox,Opera,然后是Safari接收。浏览器将负责保存HTML DOM树,允许您导航和修改它等。您可以在浏览器中创建基本(并且完全延迟但仍然)HTML wysiwyg,几乎没有javascript代码。然后你可以构建那些功能(大多数现代javascript wysiwygs所做的)。

在Flash / Silverlight中,开发人员必须从头开始并实现所有这些功能。而且很难在这个领域与Microsoft / Mozilla / Opera /等的团队竞争。

答案 2 :(得分:2)

答案 3 :(得分:2)

对于AS3来说,这是一个非常好的免费版本。

http://simplistika.com/as3-wysiwyg-rich-text-editor/

答案 4 :(得分:1)

从技术上讲,没有任何说明你无法执行此任务,因为大部分基本RTF功能 - 视觉 - 都已到位。但是有一些限制,例如自动图像/文本重排(即如果你分配一个图像并希望文本环绕它,它有点像数学+字符串+正则表达式操作。不容易。

除了渲染窗口本身(工具栏等)之外,您还可以使用Silverlight,这将有助于丢失图标并提供比JS今天提供的异常处理更有限的控制。因为这将使您能够使用WYSIWYG窗口(实际上是浏览器渲染引擎本身)和Silverlight来满足所有其他需求。

我们正在研究如何在未来版本中启用此功能,因此不会置若罔闻。

Scott Barnes / Rich Platforms产品经理/ Microsoft。

答案 5 :(得分:1)

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

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

我没有运行任何测试,但它只是“感觉”就像输入动作文本textarea似乎更慢。我遇到的另一个问题是能够在文章中添加图像并移动它们。即使在Adobe AIR中,据说它使用WebKit渲染引擎,所以我尝试使用JavaScript进行RTE,这在Safari浏览器上也可以正常工作(也使用WebKit),但是当通过AIR加载它时,它表现不同。

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

对于JavaScript RTE,请参阅:

TinyMCE,FCKEditor(CKEditor),YUI 2的编辑,还有其他几个,如果你想自己动手,请在execCommand()上寻找教程,它基本上是修改所选元素或将元素插入到contentEditable region。

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

答案 6 :(得分:1)

javascript编辑器的主要优点是javascript为创建高级html元素(表格,水平线,有序列表和表单元素)提供了更多可能性。 但是,大多数编辑器都是使用designmode和contenteditable iframe创建的。 这意味着代码的实际生成是由浏览器而不是javascript发生的。每个浏览器可能会生成不同的html,这可能是不需要的。

Flash编辑器功能较少,需要闪存,但可能是Flash网站的完美解决方案。 javascript编辑器中的html差异可能非常烦人,而flash-html不支持的功能不应该在javascript编辑器中。 Flash还会生成其他未在html中使用的标记,例如:<textformat>标记仅用于flash-html / htmltext。

我有这个问题,我找不到一个生成所有可能的flash-html的编辑器而没有javascript编辑器的问题。 所以我自己创建了一个,可以在以下位置找到:
http://www.flashcomponents.net/component/hcs-rich-text-editor.html
它生成flash-html,如果需要还有效(x)html,浏览器没有任何区别。

简而言之,对于基于非Flash的网站,您可能需要一个javascript编辑器,因为它有更多的可能性。 对于Flash网站,您需要一个基于Flash的富文本编辑器来生成带有<textformat>.

等特殊标签的flash-html代码

答案 7 :(得分:0)

你在网上用Javascript找到大部分内容的主要原因主要是经济,大多数需要用户文本输入的网站(如博客,论坛或堆栈流)都是用HTML / Javascript构建的。因此,当你有能力的JS程序员构建99%的网站时,为什么要引入一个Flash程序员来构建另外1%的网站。

但这并不意味着它们不存在!快速搜索一个更受欢迎的股票Flash网站显示3:

RTE1 | RTE2 | RTE3

那只是在FlashDen上。搜索FlashComponents.net或UltraShock.com,甚至只是google它,我保证还有更多可供出售或免费下载。

答案 8 :(得分:0)

Mindscape在这里为Silverlight创建了一个WYSIWYG富文本编辑器:

http://www.mindscape.co.nz/products/SilverlightElements/controls/HtmlEditor.aspx