自建站踩坑|华为浏览器图片上传黑屏,终于搞定了✨

  • 工作心得
  • 时间:
  • 作者:顾永胜
  • 来源:0513.city

己折腾独立建站,本来各项功能都调试顺畅,偏偏栽在了图片上传压缩上,最近被华为浏览器的兼容性bug搞得头大,熬了半宿总算完美解决,给同样自建站的朋友避个坑🙏


站内做了图片上传压缩功能,适配了各大浏览器,唯独华为浏览器出问题:彻底关掉后台重开,用户第一次上传图片,上传后直接变成全黑图片,可第二次上传、刷新页面再操作,立马恢复正常,反复排查代码、绘制逻辑,才找到问题根源。


其实不是代码写错了,是华为浏览器冷启动时,Canvas渲染内核没完全初始化,提前调用压缩API就拿不到图片像素,相当于第一次调用是给浏览器“预热”,后续才能正常读取图片。


不想等官方修复,也不想改动原有功能逻辑,针对性做了兼容处理:先判断识别华为浏览器,遇到这款浏览器时,图片压缩环节让canvas.toBlob自动执行两次,直接舍弃第一次生成的全黑无效文件,取用第二次正常导出的图片,完美绕开这个兼容性bug。


整个兼容逻辑很轻巧,完全没有多余性能损耗,站内用户压根察觉不到这段后台处理,而且只针对华为浏览器做适配,丝毫不会影响其他浏览器的使用体验,不用大改站内代码,上线后图片黑屏问题彻底解决。


自己建站就是这样,从0到1打磨每一个功能,看似很小的兼容性问题,都会影响站内用户体验。一点点排查、一点点调试,把每一处细节捋顺,看着网站越来越稳定,真的满满成就感💻