添加Blob Polyfill后,是否需调整window.FileReader && window.Blob判断?
关于Blob Polyfill引入后的条件判断调整建议
嘿,这个问题问得很务实!让我帮你梳理清楚:
核心结论
你原本的if (window.FileReader && window.Blob)条件判断不需要做本质性调整,原因如下:
- 你的Blob polyfill的核心作用,就是在原生
Blob不存在但BlobBuilder可用的场景下,给全局window对象挂载一个可用的Blob实现。也就是说,只要polyfill生效,window.Blob就会存在,并且能正常完成你需要的图片文件处理逻辑。 - 这个polyfill不会破坏原生
Blob的存在——它只会在原生Blob缺失时才会补上,所以原生支持的场景下,你的条件判断依然会正常触发。
可选的严谨性优化
如果你想让代码更稳妥(比如防止polyfill存在潜在bug导致window.Blob存在但无法正常实例化),可以在条件内部加一个简单的实例化测试:
if (window.FileReader && window.Blob) { try { // 测试Blob是否能正常实例化 new Blob(['test']); // 这里执行你的图片文件处理逻辑(Blob和FileReader操作) } catch (e) { // 极端情况:polyfill挂载了Blob但无法正常使用,执行降级逻辑 console.warn('Blob功能不可用,无法处理图片', e); } }
额外提醒
需要注意的是,你的polyfill只处理了Blob的兼容,FileReader的判断还是必要的——如果某些老旧浏览器连FileReader都不支持,你的图片处理逻辑依然无法运行,这部分判断保留是正确的。
内容的提问来源于stack exchange,提问作者Hassan Baig
相关产品推荐
相关产品推荐

