如何配置 Tinymce 使其不删除 javascript 代码?

问题描述 投票:0回答:1

在前任开发人员去世后,我继承了一个旧网站。也许很愚蠢,但他们是好人,在我们的社区里做着好事,所以我主动提供帮助。

该网站使用旧版本的 Tinymce。

我正在尝试更新注册表单以使用 Constant Contact。

我尝试添加的代码如下:

<script> var _ctct_m = "32ee443d65507d7f14ad26d121f10e50"; </script> <script id="signupScript" src="//static.ctctcdn.com/js/signup-form-widget/current/signup-form-widget.min.js" async defer></script>

发布时,编辑器修改了代码,删除了 src 标签并添加了 CData 标签,如下所示:

<script type="text/javascript">// <![CDATA[ var _ctct_m = "32ee443d65507d7f14ad26d121f10e50"; // ]]></script> <script id="signupScript"></script>

不管怎么说;这是行不通的。

我修改了mce_editor.js文件中的设置选项;将“cleanup”设置为 0,将“validate html”设置为 false。有效元素列表中有一个“script[src|type”标签,但问题仍然存在。

还有另一个名为 mce_serializer.js 的文件,其中包含“valid_elements : '[]”设置,看起来不错。

mce_init.js 文件似乎没有任何会导致编辑器删除代码的内容。

我在https://stackoverflow.com/questions/28983735/how-can-i-prevent-tinymce-from-adding-cdata-to-script-tags-and-from-commenting看到了可能的解决方案但它没有解释我应该在哪个文件中添加此代码。也许我们的 Tinymce 版本有所不同。

有人对我如何完成这项工作有任何建议吗?

tinymce cdata stripping script-src
1个回答
0
投票

听起来 TinyMCE 正在积极清理您的脚本标签,这可能是由于其默认的内容过滤设置。由于您已经尝试修改 cleanup 和 validate_html 设置但没有成功,所以让我们通过 TinyMCE 的设置显式允许脚本标记来解决该问题。

您可以更新TinyMCE初始化设置来解决此问题。修改 TinyMCE 初始化脚本(通常位于 mce_init.js 之类的文件中或直接位于初始化 TinyMCE 的 HTML 页面中)以包含 Extended_valid_elements 选项。这允许您指定 TinyMCE 不应清理或删除的元素。 在 TinyMCE 初始化配置中,添加以下行:

extended_valid_elements: 'script[type|src|id|defer|async]'

这一行告诉 TinyMCE 保留带有 type、src、id、defer 和 async 属性的脚本标签。 以下是如何修改 TinyMCE 初始化的示例:

tinymce.init({
    selector: 'textarea',  // Change this to your specific selector
    ...
    extended_valid_elements: 'script[type|src|id|defer|async]',
    ...
});

此配置应防止 TinyMCE 从脚本标记中剥离必要的属性,从而保留注册表单的功能。

以下是如何使用此特定功能的官方链接:https://www.tiny.cloud/docs-3x/reference/Configuration3x/Configuration3x@extended_valid_elements/

如果此方法无法解决问题,您可能还需要检查是否有任何服务器端脚本或 CMS 插件可能会在 TinyMCE 处理内容后修改内容,特别是如果 CMS 或服务器框架具有额外的清理或安全性脚本标签的措施。

© www.soinside.com 2019 - 2024. All rights reserved.