TinyMCE удаляет допустимые теги - PullRequest
1 голос
/ 14 октября 2011

Я использую tinyMCE для небольшого сайта, который используется людьми для написания простых статей.Обычно они пишут в MS word и копируют текст в tinyMCE и отправляют это.

Вот почему я допустил только несколько тегов:

valid_elements: "a[href|target],strong/b,em/i,div[align],br,p[style|align],ul,li,ol,table,tr,td,iframe[*],img[*]",

Но несмотря на то, что разрешено img [*] после вставки изображения только с помощью «Вставить / редактировать изображение»:

<img alt=""/>

появляется в коде.То же самое касается iframe (который полностью удален). Я уже пробовал каждую комбинацию valid_elements с полным списком атрибутов img и iframe и с extended_valid_elements.

Когда я удаляю предложение valid_elements, все работает нормально, но затем форматирование словачто недопустимо (h1, h2 и т. д.) портит стили.

Версия TinyMCE - 3.4.2.

1 Ответ

1 голос
/ 17 октября 2011

Я использую параметр paste_preprocess с плагином tinymce paste и отфильтровываю там ненужные теги.Вот пример:

в вашей инициализации tinymce:

paste_preprocess : function(pl, o) {
    //if(console) console.log('Object', o);
    //if(console) console.log('Content:', o.content);
        // usage param1 = the string to strip out tags from, param2 = tags to keep in the string
    o.content = ir.im.strip_tags( o.content,'<p><div><br><br/>' );
},

Функция справки для удаления тегов:

strip_tags = function (str, allowed_tags) {
    var key = '', allowed = false;
    var matches = [];    var allowed_array = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = ''; 
    var replacer = function (search, replace, str) {
        return str.split(search).join(replace);
    };
     // Build allowes tags associative array
    if (allowed_tags) {
        allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
    }
     str += '';

    // Match tags
    matches = str.match(/(<\/?[\S][^>]*>)/gi);
     // Go through all HTML tags
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;        }

        // Save HTML tag
        html = matches[key].toString();
         // Is tag not in allowed list? Remove from str!
        allowed = false;

        // Go through all allowed tags
        for (k in allowed_array) {            // Init
            allowed_tag = allowed_array[k];
            i = -1;

            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}           
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}

            // Determine
            if (i == 0) {                allowed = true;
                break;
            }
        }
         if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }

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