一些WYSIWYG编辑器如何保持粘贴文本的格式?

时间:2010-12-19 04:15:39

标签: javascript jquery browser wysiwyg dom-events

一些WYSIWYG编辑器如何保持粘贴文本的格式?作为一个例子,我将斜体红色文本从文本编辑器复制到WYSIWYG,它保留了文本的颜色和样式,这是怎么回事?我认为JavaScript只能访问剪贴板文本。这不是这种情况吗?如果是的话,那是什么?

4 个答案:

答案 0 :(得分:3)

在复制/粘贴操作期间,源和目标之间存在内容类型协商。它有点像这样:

  1. 您将某些内容复制到复制和粘贴缓冲区中。复制的数据或多或少地用MIME类型标记,并将其放在那里。
  2. 粘贴时,粘贴目标告诉复制粘贴系统它了解特定的MIME类型列表。
  3. 复制粘贴系统将可用格式与所需格式相匹配,并在两个列表中找到text/html
  4. 某人(可能是数据的原始来源)然后将粘贴缓冲区转换为text/html并将其放入编辑器中。
  5. 当我做X11 / Motif开发时,这几乎就是事情的发展(嘿!从我的草坪上扯下你让孩子们腐烂!)所以我猜大家都这样做了。

答案 1 :(得分:2)

JavaScript通常无法直接访问剪贴板。但是,过去几年发布的所有主要浏览器都有一个内置的WYSIWYG编辑工具,通过任何元素的contenteditable属性/属性(这使得该元素可编辑)和designMode属性文档对象(使整个文档可编辑)。

当用户编辑页面中的内容时,如果他们触发粘贴(通过键盘快捷键,例如 Ctrl + V Shift + 插入或通过编辑或上下文菜单),浏览器自动处理整个粘贴过程,无需JavaScript的任何干预。此过程的一部分包括尽可能保留格式。

然而,这产生的HTML可能很糟糕,并且在浏览器之间变化很大。许多WYSIWYG编辑器(如TinyMCE和CKEditor)使用tricks拦截粘贴的内容,并在它到达编辑器的可编辑区域之前对其进行清理。

答案 2 :(得分:1)

您所看到的是富文本编辑器。这篇维基百科文章中有一些信息:http://en.wikipedia.org/wiki/Online_rich-text_editor

答案 3 :(得分:0)

我认为它复制了所选的DOM