7

将文本从 word 复制到wysihtml5 编辑器时,文本会变得混乱(无论是在格式方面还是在额外添加的字符方面)。有一个简单的解决方法吗?我正在寻找的正确行为是 Stack Overflow 的富文本编辑器的工作方式 - 从 word 复制和粘贴的文本看起来与 word 文档相同。

谢谢!

更新: 为了解决粘贴单词文本的格式问题,我"p": {},在使用的 wysihtml5-0.30_rc2.js 文件中添加了该行。该行已添加到 defaultOptions[parserRules][tags] 的声明中(请参阅使用的资源)。

不过,现在我可以在粘贴文本的开头看到“字体定义”段落:

<!-- /* Font Definitions */ @font-face {font-family:Arial; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; mso-hyphenate:none; font-size:11.0pt; font-family:Arial; mso-fareast-font-family:Arial; mso-bidi-font-family:Arial; color:black; mso-fareast-language:HI; mso-bidi-language:HI;} a:link, span.MsoHyperlink {mso-style-unhide:no; mso-style-parent:""; color:navy; mso-ansi-language:#00FF; mso-fareast-language:#00FF; mso-bidi-language:#00FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt
90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} -->

这仅在我使用 Firefox 时发生,在 Chrome 中不会发生。关于如何摆脱这个问题的任何想法?

4

2 回答 2

1

wysihtml5包含一个解析器,它分析粘贴在其文本区域中的所有文本并应用parserRules配置对象中定义的过滤规则。添加"style": { "remove": 1 }到你parserRules应该做的伎俩。

要了解 Firefox 问题,您必须查看粘贴到文本区域的原始剪贴板 HTML 内容(源自 Word)。只是复制一些 Word 文本并将其粘贴到文本编辑器中没有帮助,因为文本编辑器需要剪贴板内容的纯文本变体。

如果您使用的是 Mac,您可以借助ClipboardViewer 工具查看原始剪贴板内容,您必须使用 XCode 自行编译。所需的 HTML 内容应位于public.htmlApple HTML pasteboard type字段中。也许存在其他不需要编译和/或在其他操作系统上工作的工具。

现在您应该看到 Word 中的剪贴板内容实际上看起来像

    <span>
    <!--
      /* Font Definitions */
      ...
      div.WordSection1 {page:WordSection1;}
      ...
    -->
    </span>

因此,通过删除style标签(及其所有内容),字体定义垃圾就会消失。

查看wysihtml5 的 parserRule 演示,了解一些更高级的配置选项。

于 2014-02-11T15:08:25.457 回答
1

我已经通过覆盖解决了这个问题wysihtml5.dom.getPastedHtml。加载 wysihtml5 后添加:

wysihtml5.dom.getPastedHtml = function(event) {
  var html;
  if (event.clipboardData) {
    html = event.clipboardData.getData('text/plain');
  }
  return html;
};
于 2015-12-09T02:20:31.170 回答