首页 > 解决方案 > Tinymce 编辑器在编辑模式下剥离脚本标签

问题描述

我在管理区域有一个 tinymce 编辑器,我想在其中使用脚本标签。通过使用以下,我可以使用标签并保存它。之后,我可以在数据库中看到它已保存。但问题是,当我再次编辑同一页面并且编辑器预加载了内容时,它会以某种方式剥离标签。所以我看不到它并再次编辑它。

valid_children : '+body[style],+body[script]',

extended_valid_elements : '*[*]',

因此,请让我知道是否有任何方法可以阻止这些脚本标签剥离。我试图合并记录 editor.getContent() 但它也显示没有标签的内容,而我可以在数据库和前端源中看到它。

谢谢

标签: tinymce

解决方案


您可能会因为尝试在 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 中。


推荐阅读