jQuery KendoEditor не удаляет вставленный HTML

У меня есть страница, где я использую экземпляр KendoEditor. Редактор должен иметь очень ограниченную функциональность и разрешать только strong, ul, li, ol, а также p HTML-теги внутри его содержимого. Всякий раз, когда я вставляю целую веб-страницу в редактор, она вставляется вместе со всеми HTML-тегами этой страницы.

Я попытался отфильтровать их, используя сочетание атрибута pasteCleanup KendoEditor и регулярных выражений, например так:

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

2 ответа

Решение

Вы забыли одну маленькую, но важную деталь: модификатор JavaScript g, Вы можете рассмотреть i для нечувствительности к регистру.

для меня это сработало

                      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;
                }
            }
Другие вопросы по тегам