TinyMCE粘贴为纯文本
这是RTE在networking上的常见问题之一。 你能请指导我如何:
- 粘贴为普通文本
- 保留HTML但删除WORD / HTML样式
我想直接通过粘贴(paste_preprocesscallback),而不打开粘贴插件提供的对话框。
任何想法/经验?
谢谢,
伊姆兰
这是我所做的粘贴纯文本。
1. paste_preprocess设置(在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.functionstrip_tags(在主文档上)
// 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; }
其实,你现在可以做到这一点:
plugins: 'paste', ... paste_auto_cleanup_on_paste : true, paste_remove_styles: true, paste_remove_styles_if_webkit: true, paste_strip_class_attributes: true,
信用: http : //www.miuaiga.com/index.cfm/2010/1/7/New-TinyMCE-lets-you-paste-as-plain-text-automatically
正在寻找这个..对于TinyMCE,你可以使用内置的粘贴作为文字行为。 只需使用下面的值设置tinymce init。
资料来源:jerome.chevreau, http ://www.tinymce.com/forum/viewtopic.php?id = 6788
//add paste plugin plugins : 'paste', //Keeps Paste Text feature active until user deselects the Paste as Text button paste_text_sticky : true, //select pasteAsPlainText on startup setup : function(ed) { ed.onInit.add(function(ed) { ed.pasteAsPlainText = true; }); }
现在有一个新的选项可以取代所有上述的选项:
tinymce.init({ paste_as_text: true });
请参阅http://www.tinymce.com/wiki.php/Configuration:paste_as_text
或者在django-tinymce中settings.py:
TINYMCE_DEFAULT_CONFIG = { 'paste_as_text': True, }
我用这个:
oninit: function (ed) { ed.pasteAsPlainText = true; }
随着
paste_text_sticky: true