我有一个页面在其中使用KendoEditor的实例。编辑器的功能应非常有限,并且在其内容内仅允许strong
,ul
,li
,ol
和p
HTML标记。每当我将整个网页粘贴到编辑器中时,它就会与该页面的所有HTML标签一起粘贴。
我尝试使用KendoEditor的 pasteCleanup 属性和正则表达式(例如:
pasteCleanup: {
css: true,
span: true,
msAllFormatting: true,
msConvertLists: true,
msTags: true,
keepNewLines: true,
custom: function (html) {
return html.replace(/<\/?(?!strong)(?!ul)(?!li)(?!ol)(?!p)\w*\b[^>]*>/, "");
}
},
但是即使我设置了所有内容:true在pasteCleanup上,它仍然保留跨度style="font-size: something"
,字体和标题(h1
,h2
...等等)标签。我还尝试在KendoEditor的粘贴事件中手动解析它:
paste: function(e) {
$(".text-editor").find("*").not("strong,ul,li,ol,p").each(function() {
$(this).replaceWith(this.innerHTML);
});
},
我尝试同时定位编辑器的textarea
以及包含显示文本的iframe,但这绝对没有效果。我的假设是粘贴在内容呈现之前就触发。我还尝试了 pasteCleanup 的几乎所有组合,您可以想象一下,认为其中一些道具可能会相互冲突。有想法吗?
示例粘贴页面:https://html.nicole-wellinger.ch/schrift/txtgroesse.html
答案 0 :(得分:1)
您忘记了一个小而重要的细节:JavaScript modifier g
。您可能还希望考虑i
区分大小写。
答案 1 :(得分:0)
对我来说这是最有效的
pasteCleanup: {
custom: function (html)
{
html = html.replace(/<\s*br\/*>/gi, '');
html = html.replace(/<\s*a.*href="(.*?)".*>(.*?)<\/a>/gi, " $2 (Link - $1) ");
html = html.replace(/<\s*\/*.+?>/ig, '');
html = html.replace(/ {2,}/gi, '');
html = html.replace(/\n+\s*/gi, '');
html = html.replace(" ", '');
html = html.replace(/<.*?>/g, '');
return html;
}
}