jQuery KendoEditor 不剥离粘贴 HTML
jQuery KendoEditor not stripping pasted HTML
我有一个页面,我在其中使用了 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[^>]*>/, "");
}
},
但即使我在 pasteCleanup 上设置了 all: true 这仍然保留了跨度 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
您忘记了一个小而重要的细节:JavaScript modifier g
。您可能还想考虑 i
不区分大小写。
对我来说,这是有效的
pasteCleanup: {
custom: function (html)
{
html = html.replace(/<\s*br\/*>/gi, '');
html = html.replace(/<\s*a.*href="(.*?)".*>(.*?)<\/a>/gi, " (Link - ) ");
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;
}
}
我有一个页面,我在其中使用了 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[^>]*>/, "");
}
},
但即使我在 pasteCleanup 上设置了 all: true 这仍然保留了跨度 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
您忘记了一个小而重要的细节:JavaScript modifier g
。您可能还想考虑 i
不区分大小写。
对我来说,这是有效的
pasteCleanup: {
custom: function (html)
{
html = html.replace(/<\s*br\/*>/gi, '');
html = html.replace(/<\s*a.*href="(.*?)".*>(.*?)<\/a>/gi, " (Link - ) ");
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;
}
}