function mag_xss(html,vueParsObj){
var isArticlePage = false;
var qikanUrl='';
var magDir='';
if(vueParsObj && vueParsObj.data && vueParsObj.data.magDir){
isArticlePage = true;
qikanUrl = mag_currentQikanUrl();
magDir = vueParsObj.data.magDir;
}
var options = {
whiteList:{
},
stripIgnoreTagBody:true,
onTag:function(tag,html,options){
if(isArticlePage){
//文章rich json中的img
if(tag=='img'){
var className = mag_vue_getAttrValue(tag,'class',html);
if(className && className.match(/(^| )mag_rich_graphic( |$)/g)){
var src = mag_vue_getAttrValue(tag,'src',html);
if(src && src.trim()!='' && !src.trim().startsWith('http://') && !src.trim().startsWith('https://')){
var newSrc = qikanUrl+'/'+magDir+"/"+src;
html = html.replace(src,newSrc);
}
}
}
//文章整合页面rich video处理
if(tag=='video'){
var className = mag_vue_getAttrValue(tag,'class',html);
if(className && className.match(/(^| )mag_shipin( |$)/g)){
var src = mag_vue_getAttrValue(tag,'src',html);
if(src && src.trim()!='' && !src.trim().startsWith('http://') && !src.trim().startsWith('https://')){
var newSrc = qikanUrl+'/'+magDir+"/"+src;
html = html.replace(src,newSrc);
}
var poster = mag_vue_getAttrValue(tag,'poster',html);
if(poster && poster.trim()!='' && !poster.trim().startsWith('http://') && !poster.trim().startsWith('https://')){
var newPoster = qikanUrl+'/'+magDir+"/"+poster;
html = html.replace(poster,newPoster);
}
}
}
//文章整合页面的a.mag_body_media_a
if(tag=='a'){
var className = mag_vue_getAttrValue(tag,'class',html);
if(className && className.match(/(^| )mag_body_media_a( |$)/g)){
var href = mag_vue_getAttrValue(tag,'href',html);
if(href && href.trim()!='' && !href.trim().startsWith('http://') && !href.trim().startsWith('https://')){
var newHref = qikanUrl+'/'+magDir+"/"+href;
html = html.replace(href,newHref);
}
}
}
}
var whiteList1 = {};
if(tag.toLowerCase()=='script' || tag.toLowerCase()=='svg'){
return;
}else{
eval('whiteList1 = {\''+tag.replace("'","\\'")+'\':[]}');
}
var options1 = {
whiteList:whiteList1,
onTag:function(tag1,html1,options1){
//
},
onTagAttr:function(tag, name, value, isWhiteAttr) {
if(tag.toLowerCase()=='iframe'){
if(name.toLowerCase()=='src' && value && (!value.trim().toLowerCase().startsWith('http://') && !value.trim().toLowerCase().startsWith('https://'))){
//去掉
return '';
}
}
if(tag.toLowerCase()=='a'){
if(name.toLowerCase()=='href' && value && (!value.trim().toLowerCase().startsWith('http://') && !value.trim().toLowerCase().startsWith('https://'))){
//去掉
return 'href="javascript:;"';
}
}
if(tag.toLowerCase()=='img'){
if(name.toLowerCase()=='src' && value && (!value.trim().toLowerCase().startsWith('http://') && !value.trim().toLowerCase().startsWith('https://'))){
//去掉
return '';
}
}
if(name && name.toLowerCase().startsWith('on')){
//去掉
return '';
}else{
//保留
return name+'="'+value.replace("\"",""").replace("'", "'")+'"';
}
}
}
return filterXSS(html,options1);
}
};
var ht = filterXSS(html,options);
return ht;
}
function mag_vue_getAttrValue(tagName,attrName,tagHtml){
var attrValue=null;
var whiteList = {};
eval('whiteList = {\''+tagName.replace("'","\\'")+'\':[]}');
var options = {
whiteList:whiteList,
onTag:function(tag,html){
//
},
onTagAttr:function(tag, name, value){
if(name==attrName){
attrValue = value;
}
}
};
filterXSS(tagHtml,options);
return attrValue;
}