我刚刚在我正在构建的网站上安装了CKeditor富文本WYSIWYG编辑器,它似乎工作正常,除了它将文本作为编码的html而不是常规html插入我的mysql数据库中然后当浏览器输出此文本,它将编码数据转换为常规html,然后在浏览器中显示html标签,没有样式!?
例如我输入:
"This is text"
进入编辑器然后插入
<p>This is text</p>
进入数据库。然后,当页面被调用时,浏览器会在页面上转换以上内容和以下内容:
<p>This is text</p>
显然我只想在页面上显示"This is text"
。
有谁知道为什么会这样?请问如何解决?
欢迎任何建议。
干杯
答案 0 :(得分:2)
如果您不希望CKEditor为您创建段落,请将config.autoParagraph
设置为false。此外,您可能希望更改输入密钥行为,config.enterMode
设置为CKEDITOR.ENTER_BR
。
regarding disappearing styles ......
因此,在呈现您键入的内容时,您的网站是否显示HTML标记而不是HTML?
那么问题是你的服务器端而不是CKEditor。您可以在控制台中验证CKEDITOR.instances.yourInstance.getData()
是否产生了正确的,未转义的HTML:
<p>This is text</p> // Right!
如果是这样,我坚信,CKEditor就好了,这是你的服务器应用程序,它将特殊字符转换为实体(例如像PHP htmlspecialchars),同时保存到数据库。你没有提到你在那里使用什么样的框架/语言,所以我可以告诉你,它是为了保护用户输入以防止跨站点脚本,打破布局等。所有流行的框架都允许你禁用该功能一个特定的领域。只需参考文档。
答案 1 :(得分:1)
现代模板语言倾向于自动调用html输入。例如,在DTL中,只需使用即可在模板中正确显示 {{object.field_name | safe}} 这是一个期望的操作,因为用户输入被认为是不可信的并且可能被视为恶意。
答案 2 :(得分:0)
浏览器无法解析HTML,因此在显示的页面(或php文件中)尝试使用{! !}
而不是{{ }}
。