0

我有一个使用 KendoEditor 实例的页面。编辑器的功能应该非常有限,并且只允许在其内容中使用strongulliol和HTML 标记。p每当我将整个网页粘贴到编辑器中时,它都会与该页面的所有 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 ,它仍然保留 span style="font-size: something"、 font 和 headings ( h1, h2...etc) 标签。我还尝试在 KendoEditor 的粘贴事件上手动解析它:

paste: function(e) {
  $(".text-editor").find("*").not("strong,ul,li,ol,p").each(function() {
    $(this).replaceWith(this.innerHTML);
  });
},

我尝试同时针对textarea编辑器以及包含显示文本的 iframe,但这绝对没有效果。我的假设是 paste 在内容被渲染之前触发。我还尝试了pasteCleanup的所有组合,你可以想象其中一些道具可能会相互冲突。任何的想法?

示例粘贴页面:https ://html.nicole-wellinger.ch/schrift/txtgroesse.html

4

2 回答 2

1

您忘记了一个小而重要的细节:JavaScript 修饰符 g。您可能还需要考虑i不区分大小写。

于 2019-01-08T11:46:01.380 回答
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;
                }
            }
于 2021-06-20T02:48:11.803 回答