多个img标签,每个标签的src都不一样,
现在需要分别对src为base64编码的和非base64的图片做不同的处理,
javascript应该如何区分该图片是不是base64的?
多个img标签,每个标签的src都不一样,
现在需要分别对src为base64编码的和非base64的图片做不同的处理,
javascript应该如何区分该图片是不是base64的?
$('img').each((i,item)=>{
let src = item.src
if(src.indexOf('data:image/jpg;base64,')>-1){
// base64 图片操作
}else{
//path 图片操作
}
})
直接根据src开头匹配就行
$('img').each((i,item)=>{
let src = item.src
if(src.indexOf('data:image')>-1){
// base64 图片操作
}else{
//path 图片操作
}
})
function validDataUrl(s) {
return validDataUrl.regex.test(s);
}
validDataUrl.regex = /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i;
module.exports = validDataUrl;
要用startWith,这样效率高:
$('img').each((i,item)=>{
let src = item.src
if(src.startWith('data:image')){
// base64 图片操作
}else{
//path 图片操作
}
})
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
BASE64码开头都是形如
data:image/xxx;base64,xxxxxx...
的,所以写个正则测试一下src就可以了