0

CKEditorを使用してHtmlメール全体(html、本文、タグなど)を編集しようとしています(したがって、すべてのHtmlコードはテキストエリア内にあります)。

ajaxを介してHtmlをロードし、それをtextarea内に配置すると、外側のページはロードされたページのプロパティの一部を取得します(たとえば、背景色の変化を確認できます)。

これを回避する方法はありますか?

私はCakePHPを使用しています、そして私は私のセクションの中にこれを持っています:

    if($this->request->params['controller'] == 'designs')
    {
        echo $this->Html->script('ckeditor/ckeditor.js');
        echo '<script>var enableCkeditor = true;</script>';
    } else
    {
        echo '<script>var enableCkeditor = false;</script>';
    }

後で私は次のことをします:

<script>
$(document).ready(function()
{

    if(enableCkeditor)
    {
       CKEDITOR.replace('htmleditor');
    }
});
</script>

そして後でこれ(フォームの一部として)

<textarea name="html" id="htmleditor" class="ckeditor"><?php echo $thisHtml; ?></textarea>

私が達成しようとしているのは、HTMLメールエディタを作成することです。そのため、ロードするHtmlにはすべてのスタイルがインラインで含まれています。あなたたちは良いオープンソースの電子メールHtmlエディタを知っていますか?

ありがとう

4

2 に答える 2

1

次の方法で、テキストエリア内の HTML をエスケープする必要がありますhtmlentities

<textarea name="html" id="htmleditor" class="ckeditor"><?php echo htmlentities($thisHtml); ?></textarea>

<textarea>との間のエンコードされていない html は</textarea>通常の HTML として評価されます。つまり、信じられないほど無効な HTML ドキュメントを作成していることと、スクリプト/スタイルシート リンク タグが評価されて DOM に適用されることの両方を意味します。

于 2013-01-15T21:10:19.803 に答える
0

ホスティング ページの html と読み込まれたコンテンツを確認すると役立ちますが、ホスティング ページを複製する ID を持つ要素をロードしているか、ホスティング ページのスタイルに適用されるインライン css をロードしていると思われます。2 つのボディ間で異なる ID とクラス名を使用していることを確認してください。

于 2013-01-18T15:18:39.293 に答える