我正在尝试将 ckeditor 与 cakephp 一起使用,我已经写了帮助。问题是当我输入一些换行符或用CKeditor添加复选框(或其他html元素)时,编辑器会在下次编辑内容时崩溃。 Firefox返回以下错误:
SyntaxError:unterminated string literal
并从以下部分重点介绍}).setData("<p>test</p>
:
<script type="text/javascript">CKEDITOR.replace('data[Template][body]',{
toolbar: '',
toolbarGroups: '',
width: 950,
height: 500
}).setData("<p>test</p>
<p> </p>
<p>test</p>");</script>
以下是蛋糕助手中的代码:
$code = "CKEDITOR.replace('{$id}',{
{$options['toolbar']},
{$options['toolbarGroups']},
width: {$options['width']},
height: {$options['height']}
}).setData('" . trim($value). "');";
return $this->Javascript->codeBlock($code);
非常感谢任何帮助。
答案 0 :(得分:2)
这是因为您在JavaScript字符串中有换行符。您应该将换行符输出为HTML作为“\ n”,以便您的HTML输出如下:
<script type="text/javascript">CKEDITOR.replace('data[Template][body]',{
toolbar: '',
toolbarGroups: '',
width: 950,
height: 500
}).setData("<p>test</p>\n<p> </p>\n<p>test</p>");</script>
所以在你的助手里面:
$out .= "}).setData('" . str_replace("\n", '\n', $value). "');";
我使用了单引号,因此它会打印出\ n而不是换行符;
或者您可以使用:str_replace("\n", "\\n", $value)