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

您需要通过以下方式转义 textarea 中的 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。确保在两个主体之间使用不同的 id 和类名。

于 2013-01-18T15:18:39.293 回答