Javascript TinyMCE粘贴为纯文本
这是web上RTE的常见问题之一。请您指导我如何:Javascript TinyMCE粘贴为纯文本,javascript,html,text,tinymce,wysiwyg,Javascript,Html,Text,Tinymce,Wysiwyg,这是web上RTE的常见问题之一。请您指导我如何: 粘贴为纯文本 保留HTML,但删除WORD/HTML样式 我想直接在粘贴时执行(粘贴预处理回调),而不打开粘贴插件提供的对话框 有什么想法/经历吗 谢谢 Imran这是我获得粘贴纯文本的方法 1。粘贴预处理设置(在tinymce init中) 粘贴预处理:函数(pl,o){ //示例:保留粗体、斜体、下划线和段落 //o、 内容=带标签(o.content,); //删除所有标记=>纯文本 o、 内容=带标签(o.content.); },
Imran这是我获得粘贴纯文本的方法 1。粘贴预处理设置(在tinymce init中) 粘贴预处理:函数(pl,o){ //示例:保留粗体、斜体、下划线和段落 //o、 内容=带标签(o.content,); //删除所有标记=>纯文本 o、 内容=带标签(o.content.); }, 2。功能条标签(在主文档上)
//从字符串中去除HTML和PHP标记
//返回1:‘凯文·范·佐内维尔德’
//示例2:strip_标签(“Kevin van Zonneveld”,“”);
//返回2:“Kevin van Zonneveld”
//示例3:strip_标记(“,”)
//示例4:带标签('1<5>1');
//返回4:'1<5>1'
功能条标签(str,允许的标签)
{
var key='',allowed=false;
var匹配=[];允许的var_数组=[];
允许的var_标记=“”;
var i=0;
var k='';
var html='';
var replacer=函数(搜索、替换、str){
返回str.split(搜索)。join(替换);
};
//构建allowes标记关联数组
如果(允许的\u标记){
允许的_数组=允许的_标记匹配(/([a-zA-Z0-9]+)/gi);
}
str+='';
//匹配标签
matches=str.match(/(]*>)/gi);
//检查所有HTML标记
用于(输入匹配项){
如果(isNaN(键)){
//IE7黑客
继续;
}
//保存HTML标记
html=匹配[key].toString();
//标签不在允许列表中吗?从str中删除!
允许=错误;
//检查所有允许的标签
对于(k在允许的_数组中){//Init
允许的_标记=允许的_数组[k];
i=-1;
如果(i!=0){i=html.toLowerCase().indexOf(“”);}
如果(i!=0){i=html.toLowerCase().indexOf('正在到处寻找此项..对于TinyMCE,您可以使用内置粘贴作为文本行为。只需使用以下值设置TinyMCE init
资料来源:jerome.chevreau
实际上,您现在可以这样做:
plugins: 'paste',
...
paste_auto_cleanup_on_paste : true,
paste_remove_styles: true,
paste_remove_styles_if_webkit: true,
paste_strip_class_attributes: true,
归功于:我用过这个:
oninit: function (ed) {
ed.pasteAsPlainText = true;
}
连同
paste_text_sticky: true
现在有一个新选项取代了上述所有选项:
tinymce.init({
paste_as_text: true
});
看
或者在django tinymce中的settings.py中:
TINYMCE_DEFAULT_CONFIG = {
'paste_as_text': True,
}
我使用了@Thariama解决方案,但有一个问题
在粘贴预处理函数中:
paste_preprocess : function(pl, o) {
o.content = StripTags( o.content,'' );
console.log(o.content);
},
Tinymce将字符串返回为:
原始字符串:
"<h1>History.js Test Suite</h1>
<p>HTML5 Browsers must pass the HTML4+HTML5 tests, HTML4 Browsers must pass the HTML4 tests and should fail the HTML5 tests.</p>"
我认为这应该会让文章更清晰一些,但我希望有更多的建议/解决方案:哇!谢谢Thariama。我从哪里可以买到“替换品”“定义?您只需在strip_tags Call中输入要保留的标记。这是我找到的唯一一个删除所有标记的解决方案。以前的插件只有删除样式的选项。@Thariama如果您想将多个标记作为strip_tags()的第二个参数,该怎么办?@Scree:在上面的代码中:strip_tags(o.content,”)@Chris,你到底把这些放在哪里了?这应该和其他选项一起放在tinyMCe.init({})中。有办法保留空格吗?
TINYMCE_DEFAULT_CONFIG = {
'paste_as_text': True,
}
paste_preprocess : function(pl, o) {
o.content = StripTags( o.content,'' );
console.log(o.content);
},
"<h1>History.js Test Suite</h1>
<p>HTML5 Browsers must pass the HTML4+HTML5 tests, HTML4 Browsers must pass the HTML4 tests and should fail the HTML5 tests.</p>"
<h1>History.js Test Suite</h1><br /> <br /><p>HTML5 Browsers must pass the HTML4+HTML5 tests, HTML4 Browsers must pass the HTML4 tests and should fail the HTML5 tests.</p>
var $str1 = '<h1>History.js Test Suite</h1><br /> <br /><p>HTML5 Browsers must pass the HTML4+HTML5 tests, HTML4 Browsers must pass the HTML4 tests and should fail the HTML5 tests.</p>';
function StripTags(string) {
var decoded_string = $("<div/>").html(string).text();
return $("<div/>").html(decoded_string).text();
}
console.log(StripTags($str1));
History.js Test Suite HTML5 Browsers must pass the HTML4+HTML5 tests, HTML4 Browsers must pass the HTML4 tests and should fail the HTML5 tests.