tinymce 复制粘贴时去除文本里面的样式

发布时间 2023-04-19 15:58:32作者: 追梦的老头

第一步需要引入tinymce自带的一个粘贴插件"paste",代码如下;
import "tinymce/plugins/paste";
tinymce.init({
...其他配置,
plugins: ["paste"],
});

第二步将以下几个参数放到配置项中,亲测这些参数都有效,比如从excel表格中复制过来的内容可以清除table样式。
import "tinymce/plugins/paste";
tinymce.init({
...其他配置,
plugins: ["paste"],
paste_auto_cleanup_on_paste: true,
paste_remove_styles: true,
paste_remove_styles_if_webkit: true,
paste_strip_class_attributes: true,
paste_as_text: true,
});

第三步,如果以上参数还不满足需求,例如需要将一下特殊的标签删掉或者替换一下,此时需要有一个类似于拦截器的存在来处理一下,paste插件提供了这样的函数,代码如下;
import "tinymce/plugins/paste";
tinymce.init({
...其他配置,
plugins: ["paste"],
paste_auto_cleanup_on_paste: true,
paste_remove_styles: true,
paste_remove_styles_if_webkit: true,
paste_strip_class_attributes: true,
paste_as_text: true,
paste_postprocess: async function (plugin, args) {
// args.node可以获取到粘贴过来的所有dom节点,直接可以用操作dom的方式取修改它
// 注意此函数不需要return返回值,直接修改即可
console.log("复制粘贴paste_postprocess", args.node);
console.log(args.node.childNodes);
}
});