好的,所以我已经研究了一段时间了,但据我所知,目前 TinyMCE 中没有选项可以禁止将某些字符转换为实体。
我能理解这背后的原因,有效的 HTML 总是好的,但是,我真的需要一种方法来阻止它,我有一个电子邮件模板编辑器,客户端可以在其中编辑电子邮件模板并插入某些模板变量(即帐户::first()->first_name 获取客户的名字)。
TinyMCE 正在将 ->
转换为 ->
无论如何,我可以在 TinyMCE 方面阻止这种情况吗?
最佳答案
正如我在评论中广泛提到的那样 - 停止 TinyMCE 生成有效的 HTML 是没有意义的,因为结果变得不可预测。
相反,去 HTML 化模板标签并且只有它们来生成正确的模板:
function sanitizeTemplate(content) {
var div = document.createElement('div');
return content.replace(/{{.*?}}/g, function(mustache) {
div.innerHTML = mustache;
return div.textContent;
});
}
// var content = tinyMCE.activeEditor.getContent();
content = "<p>Dear {{ Account::first()->first_name }}</p><p>Thank you for not using <script> tags.</p>";
snippet.log("Received from editor:");
snippet.log(content);
var template = sanitizeTemplate(content);
snippet.log("The fixed template:");
snippet.log(template);
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
请注意,这里所有不是模板标签的内容仍然保持不变,并且有效的 HTML(特别是,用户键入的 <script>
不会神奇地变成 HTML 标签并尝试执行)。
关于javascript - TinyMCE 将 > 转换为 >,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31336348/