kindeditor修复会替换script内容的问题
kindeditor一些个人修改
1.替换script里面的内容的问题
2.颜色选择器扩展,复制的fck编辑器选颜色
3.swfupload.swf上传前图片预览功能
kindeditor.js
function_formatHtml(html,htmlTags,urlType,wellFormatted,indentChar){
if(html==null){
html='';
}
//2015-03-25
html=html.replace(/textarea__/ig,"textarea");
urlType=urlType||'';
wellFormatted=_undef(wellFormatted,false);
indentChar=_undef(indentChar,'\t');
varfontSizeList='xx-small,x-small,small,medium,large,x-large,xx-large'.split(',');
//2015-04-02将script里面的数据读取处理
varobj={};
varindex=0;
html=html.replace(/(<script\s[^>]*>)([\s\S]*?)(<\/script>)/ig,function($0,$1,$2,$3){
varvalue=$2+'';
if(value){
varkey="{$script__"+index+"$}";
obj[key]=value;
index++;
return$1+key+$3;
}else{
return$0;
}
});
html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function($0,$1,$2,$3){
return$1+$2.replace(/<(?:br|br\s[^>]*)>/ig,'\n')+$3;
});
html=html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig,'</p>');
html=html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig,'$1<br/>$2');
html=html.replace(/\u200B/g,'');
html=html.replace(/\u00A9/g,'©');
html=html.replace(/\u00AE/g,'®');
html=html.replace(/<[^>]+/g,function($0){
return$0.replace(/\s+/g,'');
});
varhtmlTagMap={};
if(htmlTags){
_each(htmlTags,function(key,val){
vararr=key.split(',');
for(vari=0,len=arr.length;i<len;i++){
htmlTagMap[arr[i]]=_toMap(val);
}
});
if(!htmlTagMap.script){
html=html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig,'');
}
if(!htmlTagMap.style){
html=html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig,'');
}
}
varre=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g;
vartagStack=[];
html=html.replace(re,function($0,$1,$2,$3,$4,$5,$6){
varfull=$0,
startNewline=$1||'',
startSlash=$2||'',
tagName=$3.toLowerCase(),
attr=$4||'',
endSlash=$5?''+$5:'',
endNewline=$6||'';
if(htmlTags&&!htmlTagMap[tagName]){
return'';
}
if(endSlash===''&&_SINGLE_TAG_MAP[tagName]){
endSlash='/';
}
if(_INLINE_TAG_MAP[tagName]){
if(startNewline){
startNewline='';
}
if(endNewline){
endNewline='';
}
}
if(_PRE_TAG_MAP[tagName]){
if(startSlash){
endNewline='\n';
}else{
startNewline='\n';
}
}
if(wellFormatted&&tagName=='br'){
endNewline='\n';
}
if(_BLOCK_TAG_MAP[tagName]&&!_PRE_TAG_MAP[tagName]){
if(wellFormatted){
if(startSlash&&tagStack.length>0&&tagStack[tagStack.length-1]===tagName){
tagStack.pop();
}else{
tagStack.push(tagName);
}
startNewline='\n';
endNewline='\n';
for(vari=0,len=startSlash?tagStack.length:tagStack.length-1;i<len;i++){
startNewline+=indentChar;
if(!startSlash){
endNewline+=indentChar;
}
}
if(endSlash){
tagStack.pop();
}elseif(!startSlash){
endNewline+=indentChar;
}
}else{
startNewline=endNewline='';
}
}
if(attr!==''){
varattrMap=_getAttrList(full);
if(tagName==='font'){
varfontStyleMap={},fontStyle='';
_each(attrMap,function(key,val){
if(key==='color'){
fontStyleMap.color=val;
deleteattrMap[key];
}
if(key==='size'){
fontStyleMap['font-size']=fontSizeList[parseInt(val,10)-1]||'';
deleteattrMap[key];
}
if(key==='face'){
fontStyleMap['font-family']=val;
deleteattrMap[key];
}
if(key==='style'){
fontStyle=val;
}
});
if(fontStyle&&!/;$/.test(fontStyle)){
fontStyle+=';';
}
_each(fontStyleMap,function(key,val){
if(val===''){
return;
}
if(/\s/.test(val)){
val="'"+val+"'";
}
fontStyle+=key+':'+val+';';
});
attrMap.style=fontStyle;
}
_each(attrMap,function(key,val){
if(_FILL_ATTR_MAP[key]){
attrMap[key]=key;
}
if(_inArray(key,['src','href'])>=0){
attrMap[key]=_formatUrl(val,urlType);
}
if(htmlTags&&key!=='style'&&!htmlTagMap[tagName]['*']&&!htmlTagMap[tagName][key]||
tagName==='body'&&key==='contenteditable'||
/^kindeditor_\d+$/.test(key)){
deleteattrMap[key];
}
if(key==='style'&&val!==''){
varstyleMap=_getCssList(val);
_each(styleMap,function(k,v){
if(htmlTags&&!htmlTagMap[tagName].style&&!htmlTagMap[tagName]['.'+k]){
deletestyleMap[k];
}
});
varstyle='';
_each(styleMap,function(k,v){
style+=k+':'+v+';';
});
attrMap.style=style;
}
});
attr='';
_each(attrMap,function(key,val){
if(key==='style'&&val===''){
return;
}
val=val.replace(/"/g,'"');
attr+=''+key+'="'+val+'"';
});
}
if(tagName==='font'){
tagName='span';
}
returnstartNewline+'<'+startSlash+tagName+attr+endSlash+'>'+endNewline;
});
html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function($0,$1,$2,$3){
return$1+$2.replace(/\n/g,'<spanid="__kindeditor_pre_newline__">\n')+$3;
});
html=html.replace(/\n\s*\n/g,'\n');
html=html.replace(/<spanid="__kindeditor_pre_newline__">\n/g,'\n');
for(varkeyinobj){
html=html.replace(key,obj[key]);
}
//alert(html);
return_trim(html);
}
以上所述就是修改的kindeditor的全部代码了,希望大家能够喜欢。