javascript - TinyMCE 将 > 转换为 >

标签 javascript tinymce wysiwyg tinymce-4

好的,所以我已经研究了一段时间了,但据我所知,目前 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()-&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 标签并尝试执行)。

关于javascript - TinyMCE 将 > 转换为 >,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31336348/

相关文章:

Drupal 中 TinyMCE 的类似 Wordpress 的配置

javascript - JS - document.getelementbysrc?

javascript - 变量/对象是按值传递的吗?为什么我不能用 JavaScript 中的变量更改对象的属性?

python - django-tinymce 无法正确显示小部件

javascript - 仅向 textContent 或 innerText 添加换行符 - 在 Chrome 中

javascript - TinyMCE getContent 给出编码的 URL

javascript - 如何在悬停时显示 id div

javascript - 失败 : invalid element state on attempt to . sendKeys() 到文本字段

jquery - 通过API将颜色样式设置为tinyMCE文本选择

php - Tinymce,禁用 numlist 下拉列表