2013-01-16 11 views
6

背景を元DOM要素のinnerHTMLを取得 - 大メディアサイトの背後にある社内のエンタープライズCMSのためのTinyMCEを搭載し、物品エディタで/ sのjavascriptを処理せずに

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を取得する方法が必要です。すべてが保存され、ブラウザで処理されるHTMLではありません。それは可能ですか?

これは、jQueryを使用して入力を処理して戻すTinyMCEプラグイン用です。コンテンツはデータベースを介して読み込まれ、プラグインは画像タグを処理していますが、テキストコンテンツをまったく変更したくありませんでした。私たちは、編集者の入力を変更することはできません

  • それは我々がこれらの事業体でなければならないことを強制
  • 軽微であったとしても、 - バック生の文字にはいくつかのエンティティの自動変更は問題が多すぎることはなくなりhttps://stackoverflow.com/a/4404544/830171 - - 彼らは私がこの回答を使用することになり、私たちのサイト

にいくつかのブラウザの互換性の問題のために保存する前に、しかし、私のHTMLコードとして、ユーザが編集する必要のあるテキストエリア内にあり、私はjQueryのDOMを実行する必要があることはできません操作を(プラグインを介して)。

私が考えることの1つの方法は、私が変更する必要がある画像タグを処理するためにjQuery/DOMを使用するのではなく、多くのTinyMCEプラグインのように正規表現を使用することです。しかし、私はregex to pull all attributes out of all meta tagsでHTMLの正規表現を試してみたので、より良い方法を望んでいた!

+1

、テキストを持つ要素の 'console.dir'が保存エンティティと任意のプロパティを表示しません。デバッガ(Chrome版)でもエンティティが保持されていないHTMLのすべての要素が表示されるので、運が悪いと思います。 – pimvdb

答えて

1

Tinymceはコンテンツ編集可能なiframeを使用してコンテンツを編集します。その理由は、 console.log($('p').html());が別のものを記録する理由です。

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

tinymce.get('your_editor_id').getBody().innerHTML 
+0

私は質問のTinyMCE部分にあまり集中しませんが、これは一般的に元のHTMLを取り戻す方法です、ここではTinyMCEプラグインに固有の同じ問題を示しています - 'ed.onPostProcess.add( \t関数(編、O) \t {\t \tにconsole.log(o.content); //出力£ \t \tはconsole.log($( '<小さな-MCE-TEMP>' + o.content +「 ')。html()); //出力する ' – gingerCodeNinja

関連する問題