8

或者有吗?

从桌面软件开发人员的角度来看(可能与 Web 开发人员相反),富 Web 应用程序平台,例如 Flash 或 Silverlight,看起来是为 Web 进行所见即所得文本编辑器的更好工具。它们能够进行更复杂的输入/输出、数据表示等,并且它们在浏览器和平台上是一致的(好吧,也许还不是 Silverlight 和 Moonlight,但至少 Flash 似乎是)。

尽管如此,开发人员更喜欢使用 Javascript/DOM/HTML/CSS 以及它们所有的不兼容、差异、努力工作以解决每一个特定的怪癖并使用大量的 hack 来使这些技术做他们可能原本不应该做的事情能够做到。

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

所以,问题来了:选择 Javascript 而不是 Flash 来实现 WYSIWYG 编辑器的优势是什么?选择其他方式会有什么缺点?

4

9 回答 9

3

主要原因(我认为)是使用 JavaScript(设计模式)在浏览器中进行富 HTML 编辑的现成基础。这是由微软在 IE 5.5 中启动的(据我所知),然后被 Mozilla/Firefox、Opera 和 Safari 采用。浏览器将负责保存 HTML DOM 树,允许您导航和修改它等。您可以在几乎没有 javascript 代码的浏览器中创建一个基本的(并且完全延迟但仍然)HTML 所见即所得。然后您可以在此基础上构建功能(大多数现代 javascript 所见即所得所做的)。

在 Flash/Silverlight 中,开发人员必须从头开始并实现所有这些东西。在这方面很难与 Microsoft/Mozilla/Opera/etc 的团队竞争。

于 2009-04-18T06:28:21.830 回答
3

与 Flash 相比,JavaScript 实现的 RTE 编辑器的主要优点是:

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

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

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

于 2009-04-15T06:17:41.400 回答
2

对于 Silverlight 看看这个

http://www.vectorlight.net/controls/rich_textblock.aspx

于 2009-04-15T11:48:59.073 回答
2

对于 AS3,这是一个相当不错的免费版本。

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

于 2010-05-18T06:52:25.687 回答
1

从技术上讲,没有什么说明您不能执行此任务,因为大多数基本 RTF 功能(即视觉功能)都已到位。但是有一些限制,例如自动图像/文本重排(即,如果您分配图像并希望文本环绕它,这在某种程度上是数学+字符串+正则表达式操作的情况。不容易。

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

我们正在研究如何在未来的版本中启用此功能,以免被置若罔闻。

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

于 2009-05-02T04:12:46.503 回答
1

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

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

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

所以简而言之,对于非基于 Flash 的网站,您可能需要一个 javascript 编辑器,因为它有更多的可能性。对于 Flash 网站,您需要一个基于 Flash 的富文本编辑器来生成带有特殊标签的 flash-html 代码,例如<textformat>.

于 2011-06-24T11:55:58.573 回答
1

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

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

我没有运行任何测试,但它只是“感觉”就像在动作脚本文本区域中输入似乎更慢。我遇到的另一个问题是在文章中添加图像和移动它们的能力。即使在 Adob​​e AIR 中,据说它也使用 WebKit 渲染引擎,所以我尝试使用 JavaScript 制作 RTE,它在 Safari 浏览器(也使用 WebKit)上运行良好,但是通过 AIR 加载它时表现不同。

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

对于 JavaScript RTE,请参阅:

TinyMCE、FCKEditor (CKEditor)、YUI 2 的编辑器,还有其他几个,如果你想自己动手,请寻找关于 execCommand() 的教程,它基本上是修改选定元素或将元素插入到 contentEditable 区域的 JavaScript 方法。

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

于 2010-07-06T15:04:27.090 回答
0

您在 Web 上发现大多数使用 Javascript 的主要原因主要是经济原因,大多数需要用户文本输入的网站(如博客、论坛或 stackoverflow)都是用 HTML/Javascript 构建的。所以当你有能力的 JS 程序员构建了 99% 的站点时,为什么还要请 Flash 程序员来构建另外 1% 的站点。

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

第一站| RTE2 | RTE3

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

于 2009-04-15T14:25:43.893 回答
0

Mindscape 在这里为 Silverlight 制作一个所见即所得的富文本编辑器:

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

于 2010-08-17T01:51:50.617 回答