通过翻看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(/ /ig, " "), d = d.replace(/\n\s*\n/g, "\n"), d = d.replace(/ {2}/g, " "), 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(/ /ig, " "), d = d.replace(/\n\s*\n/g, "\n"), d = d.replace(/ {2}/g, " "), 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())