jQuery KendoEditor不会剥离粘贴的HTML

时间:2019-01-08 08:50:01

标签: javascript jquery html kendo-ui kendo-editor

我有一个页面在其中使用KendoEditor的实例。编辑器的功能应非常有限,并且在其内容内仅允许strongulliolp 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",字体和标题(h1h2 ...等等)标签。我还尝试在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

2 个答案:

答案 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("&nbsp;", '');
                    html = html.replace(/&lt;.*?&gt;/g, '');
                    return html;
                }
            }