kindeditor编辑器高级篇:如何通过监听kindeditor编辑器的粘贴(CTRL+V)事件直接过滤掉复制内容内所有的标签包括超链接

通过翻看kindeditor-min.js源码文件,查找“b.pasteType === 1”关键词,我们看到的代码片段如下所示:

1

b.pasteType === 1 && (d = d.replace(/<br[^>]*>/ig, "\n"), d = d.replace(/<\/p><p[^>]*>/ig, "\n"), d = d.replace(/<[^>]+>/g, ""), d = d.replace(/&nbsp;/ig, " "), d = d.replace(/\n\s*\n/g, "\n"), d = d.replace(/ {2}/g, " &nbsp;"), b.newlineTag == "p" ? /\n/.test(d) && (d = d.replace(/^/, "<p>").replace(/$/, "</p>").replace(/\n/g, "</p><p>")) : d = d.replace(/\n/g, "<br />$&")), b.insertHtml(d, !0))

这段代码就是实现了CTRL+V的粘贴功能,获取粘贴板内的内容d,然后对其进行简单性的处理然后赋值给编辑器b。

在这里我们不难发现并未去除过多的HTML代码且清楚超链接,所以我们需要在这里对编辑器对象b做一些后加处理,我们通过b.text()就可以拿到编辑器内的纯文本内容了,然后再将其赋值给编辑器b不就行了么?

所以得到了修改后的代码片段:

1

b.pasteType === 1 && (d = d.replace(/<br[^>]*>/ig, "\n"), d = d.replace(/<\/p><p[^>]*>/ig, "\n"), d = d.replace(/<[^>]+>/g, ""), d = d.replace(/&nbsp;/ig, " "), d = d.replace(/\n\s*\n/g, "\n"), d = d.replace(/ {2}/g, " &nbsp;"), b.newlineTag == "p" ? /\n/.test(d) && (d = d.replace(/^/, "<p>").replace(/$/, "</p>").replace(/\n/g, "</p><p>")) : d = d.replace(/\n/g, "<br />$&")), b.insertHtml(d, !0), b.html(b.text()))

不难看出只是在最后的地方追加了

b.html(b.text())

猜你喜欢

转载自blog.csdn.net/weixin_42776027/article/details/106524613