强制 TinyMCE 去除数据属性

Force TinyMCE to strip out data- attributes

我正在使用 TinyMCE 插件并将 valid_elements 选项设置为:

"a[href|target:_blank],strong/b,em/i,br,p,ul,ol,li"

即使未列出数据属性,TinyMCE 也不会删除它们。它似乎去除了所有其他未列出的属性,但出于某种原因,数据属性(例如 data-foo="bar")是一个例外。我怎样才能让 TinyMCE 去除数据属性?

我正在使用 TinyMCE 版本 3.4.7

我就是这样解决这个问题的。我通过这个函数手动更改了 TinyMCE 由 运行 生成的 HTML:

var stripDataAttributes = function(html) {

  var tags = html.match(/(<\/?[\S][^>]*>)/gi);
  tags.forEach(function(tag){
    html = html.replace(tag, tag.replace(/(data-.+?=".*?")|(data-.+?='.*?')|(data-[a-zA-Z0-9-]+)/g, ''));
  });

  return html;
};

这是一个 jsbin:https://jsbin.com/lavemi/3/edit?js,console

使用方法如下:

tinyMCE.activeEditor.setContent(
  stripDataAttributes(
    tinyMCE.activeEditor.getContent()
  )
);