TinyMCE Paste As Plain Text TinyMCE Paste As Plain Text javascript javascript

TinyMCE Paste As Plain Text


This is what i do to get paste plain text.

1. paste_preprocess setting (in tinymce init)

paste_preprocess : function(pl, o) {  //example: keep bold,italic,underline and paragraphs  //o.content = strip_tags( o.content,'<b><u><i><p>' );  // remove all tags => plain text  o.content = strip_tags( o.content,'' );},

2. function strip_tags (on the main document)

// Strips HTML and PHP tags from a string // returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'// example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');// returns 2: '<p>Kevin van Zonneveld</p>'// example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");// returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'// example 4: strip_tags('1 < 5 5 > 1');// returns 4: '1 < 5 5 > 1'function strip_tags (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;}


Actually, you can now just do this:

plugins: 'paste',...paste_auto_cleanup_on_paste : true,paste_remove_styles: true,paste_remove_styles_if_webkit: true,paste_strip_class_attributes: true,

Credit goes to: http://www.miuaiga.com/index.cfm/2010/1/7/New-TinyMCE-lets-you-paste-as-plain-text-automatically


There is now a new option that replaces all of the above:

tinymce.init({   paste_as_text: true});

See http://www.tinymce.com/wiki.php/Configuration:paste_as_text

or in django-tinymce, in the settings.py:

TINYMCE_DEFAULT_CONFIG = {   'paste_as_text': True,}