好的,所以我现在已经研究了一段时间,但是从我可以收集到目前在TinyMCE中没有选项来禁止某些字符被转换为实体。
我能理解这背后的原因,有效的HTML总是很好,但是,我真的需要一种方法来阻止它,我有一个电子邮件模板编辑器,客户端可以在那里编辑电子邮件模板并插入某些模板变量(即帐户) :: first() - > first_name,它抓取客户的名字)。
TinyMCE正在将->
转换为->
无论如何,我可以在TinyMCE方面防止这种情况发生吗?
答案 0 :(得分:0)
正如我在评论中所说的那样 - 停止TinyMCE生成有效的HTML是没有意义的,因为结果变得无法预测。
相反,de-HTML-ify模板标记,只有它们才能生成正确的模板:
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标记并尝试执行)。