CKeditor 富文本编辑器在浏览器中显示 html 标签

新手上路,请多包涵

我刚刚在我正在构建的网站上安装了 CKeditor 富文本所见即所得编辑器,它似乎工作正常,除了它以编码的 html 而不是常规 html 的形式将文本插入到我的 mysql 数据库中,然后当浏览器输出它时text 它将编码数据转换为常规 html,然后显示在浏览器中,显示 html 标签,没有任何样式!?

例如我输入:

 "This is text"

进入编辑器,然后插入

<p>This is text</p>

入数据库。然后当页面被调用时,浏览器转换上面的内容并在页面上输出以下内容:

 <p>This is text</p>

显然我只想 "This is text" 显示在页面上。

有谁知道为什么会这样/如何解决?

欢迎提出任何建议。

干杯

原文由 Smokescreen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

如果您不希望 CKEditor 为您创建段落,请将 config.autoParagraph 设置为 false。此外,您可能希望将 config.enterMode 设置为 CKEDITOR.ENTER_BR 来更改输入键行为。

关于消失的风格……


编辑:好的,看来我错过了你的意思。

所以您的网站在呈现您键入的内容时显示的是 HTML 标记而不是 HTML?那么问题是你的服务器端而不是 CKEditor。您可以在控制台中验证 CKEDITOR.instances.yourInstance.getData() 产生正确的、未转义的 HTML:

 <p>This is text</p> // Right!

如果是这样,我坚信它是,CKEditor 就好了,这是您的服务器应用程序,它在保存到数据库时将特殊字符转换为实体(即像 PHP htmlspecialchars )。你没有提到你在那里使用哪种框架/语言,所以我只能告诉你它是为了保护用户输入以防止跨站点脚本、破坏布局等,所有流行的框架都允许你禁用该功能一个特定的领域。只需参考文档。

原文由 oleq 发布,翻译遵循 CC BY-SA 3.0 许可协议

现代模板语言倾向于自动转义 html 输入。例如,在 DTL 中,只需使用 {{ object.field_name|safe }} 即可在模板中正确显示这是一个理想的操作,因为用户输入被认为是不受信任的,并且可能被认为是恶意的。

原文由 John Marcus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题