6

背景 - 大規模なメディア サイトの背後にある企業内の CMS 用の TinyMCE を搭載した記事エディターで

HTML

<p>non-breaking-space: &nbsp; pound: &pound; copyright: &copy;</p>

JS

console.log($('p').html());
console.log(document.getElementsByTagName('p').item(0).innerHTML);

両方とも戻る

non-breaking-space: &nbsp; pound: £ copyright: ©

期待しているとき

non-breaking-space: &nbsp; pound: &pound; copyright: &copy;

一部の要素はエンティティを反転させ (シャープや著作権など)、一部は保持されます (改行なしのスペース)。ブラウザーによって処理されるものではなく、元の内部 HTML をすべて保持する方法が必要です。それは可能ですか?

これは、jQuery を使用して入力を処理し、元に戻す TinyMCE プラグイン用です。コンテンツはデータベース経由で読み込まれ、プラグインは画像タグを処理していますが、テキスト コンテンツをまったく変更したくありませんでした。一部のエンティティを生のキャラクターに自動的に変更することはそれほど問題にはなりませんが、-

  • たとえそれが些細なものであっても、社説の入力を修正することはできません
  • サイトでのブラウザの互換性の問題により、保存する前にエンティティである必要があります。

私はこの答えを使用します - https://stackoverflow.com/a/4404544/830171 - ただし、HTMLコードは、ユーザーが編集する必要があり、jQuery DOM操作を実行する必要があるテキストエリア内にあるため、プラグインを介して使用できません)。

私が考えることができる 1 つの方法は、jQuery/DOM を使用して変更する必要があるイメージ タグを処理するのではなく、多くの TinyMCE プラグインのように正規表現を使用することです。しかし、 HTMLで正規表現を試みるためにすべてのメタタグからすべての属性を引き出すために正規表現で撃墜されたので、より良い方法を望んでいました!

4

1 に答える 1

1

Tinymce は contenteditable iframe を使用してコンテンツを編集します。console.log($('p').html());それが、他の何かをログに記録する理由 です。

次のコードを使用して、純粋なエディター コンテンツを取得します。

tinymce.get('your_editor_id').getBody().innerHTML
于 2013-01-16T16:22:28.703 に答える