使用CKEditor编辑整个站点

时间:2013-01-15 16:24:54

标签: html css ckeditor

我正在尝试使用CKEditor编辑整个Html电子邮件(html,正文,标签等)(因此所有Html代码都在textarea中)。

当我通过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编辑器吗?

由于

2 个答案:

答案 0 :(得分:1)

您需要通过htmlentities转义textarea中的HTML:

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

<textarea></textarea>之间的任何未编码的html都会被评估为常规HTML,这意味着您生成了一个令人难以置信的无效HTML文档,并且任何脚本/样式表链接标记都将被评估和应用你的DOM。

答案 1 :(得分:0)

这将有助于查看托管页面的html以及加载的内容,但是我怀疑您正在加载具有复制托管页面的id的元素或加载适用于托管页面样式的内联css。确保在两个实体之间使用不同的id和类名。