TinyMCE转换>到>

时间:2015-07-10 08:47:52

标签: javascript tinymce wysiwyg tinymce-4

好的,所以我现在已经研究了一段时间,但是从我可以收集到目前在TinyMCE中没有选项来禁止某些字符被转换为实体。

我能理解这背后的原因,有效的HTML总是很好,但是,我真的需要一种方法来阻止它,我有一个电子邮件模板编辑器,客户端可以在那里编辑电子邮件模板并插入某些模板变量(即帐户) :: first() - > first_name,它抓取客户的名字)。

TinyMCE正在将->转换为->

无论如何,我可以在TinyMCE方面防止这种情况发生吗?

1 个答案:

答案 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()-&gt;first_name }}</p><p>Thank you for not using &lt;script&gt; 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标记并尝试执行)。