我想在 tinymce 编辑器中粘贴时去除所有的 html 标签。以下是不起作用的代码...以下是 tinymce 设置...paste_preprocess 回调未触发...我是否缺少某些选项..?
tinyMCESettings = [ {
mode : "none,textareas",
height:heightEditor,
width:'100%',
plugins: "paste",
theme : "advanced", //skin : "wp_theme",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter",
relative_urls : "true",
paste_use_dialog : false,
paste_auto_cleanup_on_paste : false,
content_css: styleSheetToLoadForTinyMCE + "?" + new Date().getTime(),
force_p_newlines: false,
setup: function (ed) {
ed.onInit.add(
function (ed, evt) {
//resizeFrame1();
var a = tinyMCE.get(ed.id).getContent();
if(a.indexOf("hcRestrictedMode", 0) > 0){
ed.getDoc().designMode = "off";
setTimeout(function(){
tinyMCE.activeEditor.dom.setAttrib(tinyMCE.activeEditor.dom.select(".hcEditable"), 'contenteditable', 'true');
}, 1000);
}
});
},
paste_preprocess : function(pl, o) {
// Content string containing the HTML from the clipboard
alert(o.content);
o.content = o.content.replace(/<.+?>/,"");
},
paste_postprocess : function(pl, o) {
// Content DOM node containing the DOM structure of the clipboard
alert(o.content)
o.content = o.content.replace(/<.+?>/,"");
}
}];
帮帮我... 提前谢谢...
最佳答案
配置代码如下:
paste_preprocess : function(pl, o) {
alert('pasteprocess startet');
o.content = strip_tags(o.content,'');
//o.content = strip_tags(o.content,'<b><u><i><p><br><img>'); // use this i.e. to keep some tags
alert('pasteprocess ended - function strip_tags found and used');
},
这里是使用的函数(取自 here )
function strip_tags (str, allowed_tags) {
// Strips HTML and PHP tags from a string
//
// version: 1006.1915
// discuss at: http://phpjs.org/functions/strip_tags // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Luke Godfrey
// + input by: Pul
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Onno Marsman // + input by: Alex
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Marc Palau
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Eric Nagel
// + input by: Bobby Drake
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Tomasz Wesolowski // * example 1: strip_tags('<p>Kevin</p> <b>van</b> <i>Zonneveld</i>', '<i><b>');
// * 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'
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;
}
编辑: 将 paste_auto_cleanup_on_paste
设置为 true,它将起作用(检查我系统中的配置)
关于javascript - paste_preprocess tinymce 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3520608/