我正在尝试使用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编辑器吗?
由于
答案 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和类名。