Код Javascript на стороне клиента для удаления поддельного HTML из CKEditor - PullRequest
3 голосов
/ 02 августа 2010

Я полагаю, что это может быть связано с Нужно Pure / jQuery Javascript Solution для очистки Word HTML от текстовой области

Но в моем случае я am с помощью CKEditor;однако перед отправкой данных на сервер (или после их получения) я бы хотел удалить «ненужные» теги и комментарии HTML, например те, которые появляются при вставке из последних (2007 или более поздних) версий Microsoft Office.Поскольку серверная часть здесь является сторонним приложением, я бы предпочел сделать это на стороне клиента, если смогу.Да, я знаю о рисках безопасности, связанных с этим;это просто предназначено для очистки данных в общих случаях использования.

Существуют ли какие-либо общие методы или существующие библиотеки (особенно дружественные к jQuery), которые могут это сделать?Обратите внимание, я не собираюсь кодировать или вырезать все HTML, только текст, относящийся к Office.

1 Ответ

3 голосов
/ 03 августа 2010

Вы пробовали встроенный в Word инструмент очистки CKEditor? Кажется, он запускается автоматически при использовании диалога «Вставить из Word», но также может быть использован из вашего кода. Я не эксперт по CKEditor API, поэтому может быть более эффективный или правильный способ сделать это, но, похоже, это работает в текущей версии (3.3.1):

function cleanUp() {

    if (!CKEDITOR.cleanWord) {
        // since the filter is lazily loaded by the pastefromword plugin we need to add it ourselves. 
        // We use the same function as the callback for when the cleanup filter is loaded. Change the script path to the correct one
        CKEDITOR.scriptLoader.load("../plugins/pastefromword/filter/default.js", cleanUp, null, false, true );
        alert('loading script for the first usage');
    } else { // The cleanWord is available for use

        // change to the correct editor instance
        var editor = CKEDITOR.instances.editor1;
        // perform the clean up
        var cleanedUpData = CKEDITOR.cleanWord(editor .getData(),  editor );

        // do something with the clean up
        alert(cleanedUpData);
    }
}

cleanUp();

Если вам не нравится эта очистка, вы можете изменить default.js для своих нужд. Для очистки доступны некоторые параметры конфигурации, установите флажок http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html (найдите параметры "pasteFromWord").

Если вам нужно что-то более продвинутое, но для этого потребуется доступ к серверу, я рекомендую вам проверить WordOff (http://wordoff.org/).. Возможно, вы сможете построить оболочку прокси и jsonp вокруг их службы, чтобы использовать ее из клиент без установки сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...