TinyMCE

#html #asp.net #vb.net #tinymce

Вопрос:

У меня есть многострочное текстовое поле в ASP.net VB с TinyMCE. У пользователя нашего веб-сайта есть плагин на его компьютерах, который вставляет нежелательный HTML-код в текстовое поле TinyMCE.

 <p>amp;nbsp;</p><div id="ConnectiveDocSignExtentionInstalled" data-extension-version="1.0.4"></div>
 

Есть ли способ отфильтровать этот текст и удалить его перед сохранением содержимого полного текстового поля в моей базе данных SQL?

Ответ №1:

Одним из вариантов является использование фильтра узлов TinyMCE для удаления элемента при сериализации содержимого внутри редактора. Вот пример:

 setup: (editor) => {
  editor.on('PreInit',() => {
    // Create a custom node filter to remove unwanted content when getting content from the editor
    editor.serializer.addNodeFilter('div', (nodes) => {
      nodes.forEach((node) => {
        const id = node.attr('id');
        if (id === 'ConnectiveDocSignExtentionInstalled') {
          node.remove();
        }
      });
    });
  });
}
 

и его рабочая версия: https://fiddle.tiny.cloud/RAhaab/1

Это работает путем регистрации фильтра во время последовательности инициализации, чтобы удалить нарушающий div, добавленный расширением пользователей, когда TinyMCE извлекает содержимое из редактора. Более подробную информацию об API узла, используемом фильтром, можно найти здесь: https://www.tiny.cloud/docs/api/tinymce.html/tinymce.html.node/

Другой вариант, который будет зависеть от вашей интеграции, заключается в использовании фильтрации отправляемого контента на стороне сервера. То, как вы это сделаете, будет отличаться в зависимости от используемых фреймворков и т. Д.