tinymce - Tinymce 编辑器在编辑模式下剥离脚本标签
问题描述
我在管理区域有一个 tinymce 编辑器,我想在其中使用脚本标签。通过使用以下,我可以使用标签并保存它。之后,我可以在数据库中看到它已保存。但问题是,当我再次编辑同一页面并且编辑器预加载了内容时,它会以某种方式剥离标签。所以我看不到它并再次编辑它。
valid_children : '+body[style],+body[script]',
extended_valid_elements : '*[*]',
因此,请让我知道是否有任何方法可以阻止这些脚本标签剥离。我试图合并记录 editor.getContent() 但它也显示没有标签的内容,而我可以在数据库和前端源中看到它。
谢谢
解决方案
您可能会因为尝试在 JavaScript 本身中将结束脚本标记作为字符串的一部分加载而被绊倒。
如果</script>
JavaScript 字符串中有结束脚本 ( ) 标记,解释器可能会将其解释为脚本块的结束,而不是字符串中内容的一部分。在许多情况下,这只会完全破坏页面的 JavaScript。
这是 TinyMCE Fiddle 中的一个示例,它显示了</script>
在字符串中传递标签的正确方法:http: //fiddle.tinymce.com/Fvhaab
例如:
tinymce.editors[0].setContent(`
<p>This is NEW content in TinyMCE!</p>
<script>
var x = "test";
var y = 10;
</script>
`);
...不管用。如果您将此尝试用于结束脚本标记,您将看到编辑器根本不会出现,因为该结束脚本标记过早地结束了整个 JavaScript 部分。
相反,您可以/
在结束脚本标记中转义:
tinymce.editors[0].setContent(`
<p>This is NEW content in TinyMCE!</p>
<script>
var x = "test";
var y = 10;
<\/script>
`);
...您会看到脚本已按预期加载到 TinyMCE 中。
推荐阅读
- spring-boot - @Around(AOP) 的 joinPoint 继续但不返回结果
- django - 使用没有 raven 的新 sentry_sdk 为 Django 配置 Sentry 处理程序
- python - 运行 pytest 时如何让 VSCode 正确激活 conda?
- php - 如果 have_posts 则帖子标题重复
- python-3.x - 如何对 pandas 数据框中的列进行排序和更新。在更新的数据框中,我想连接新的数据框
- android - Flutter:如何修复 ProcessException:进程“gradlew.bat”异常退出
- firebase - Firestore 规则,使用短路来挤出读取
- openssl - 使用 OpenSSL 的 KAS-ECC OnepassDH
- google-apps-script - 问题从显示错误“”TypeError:无法从未定义读取属性“值”的谷歌表单做出响应。(第 2 行,文件“代码”)“”
- javascript - 具有两个系列复选框的复选框功能