7

Word からwysihtml5 エディターにテキストをコピーすると、テキストが台無しになります (書式設定と追加文字の両方の点で)。これに対する簡単な修正はありますか?私が探している正しい動作は、スタック オーバーフローのリッチテキスト エディターの動作です。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.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 に答える
1

wysihtml5には、テキスト領域に貼り付けられたすべてのテキストを分析し、parserRulesconfig オブジェクトで定義されたフィルター規則を適用するパーサーが含まれています。"style": { "remove": 1 }あなたに追加すると、parserRulesうまくいくはずです。

Firefox の問題を理解するには、テキスト領域に貼り付けられる未加工のクリップボード HTML コンテンツ (Word から発生) を確認する必要があります。Word テキストをコピーしてテキスト エディターに貼り付けるだけでは役に立ちません。テキスト エディターはクリップボードのコンテンツのテキストのみのバリアントを要求するからです。

Mac を使用している場合は、XCode で自分でコンパイルする必要があるClipboardViewer ツールを使用して、この未加工のクリップボード コンテンツを表示できます。目的の HTML コンテンツはpublic.htmlまたはApple HTML pasteboard typeフィールドにある必要があります。コンパイルする必要のない他のツールや、他のオペレーティング システムで動作するツールが存在する可能性があります。

Word からのクリップボードの内容が実際には次のようになっていることがわかります。

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

そのため、タグを (すべてのコンテンツと共に)削除することでstyle、フォント定義のジャンクが消えます。

より高度な構成オプションについては、wysihtml5 の parserRule デモをご覧ください。

于 2014-02-11T15:08:25.457 に答える