Tinymce编辑器在编辑模式下剥离脚本标签

时间:2020-10-15 17:05:00

标签: tinymce

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

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

extended_valid_elements : '*[*]',

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

谢谢

1 个答案:

答案 0 :(得分:0)

通过尝试将结束脚本标签作为JavaScript本身的字符串的一部分来加载,您可能会陷入困境。

如果JavaScript字符串中有结束脚本(</script>)标记,则解释器可能会将其解释为脚本块的结束,而不是字符串中内容的一部分。在许多情况下,这只会完全破坏页面的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中。

相关问题