WebP图片在Safari上不显示怎么办?
我最近把项目里的JPG和PNG都转成WebP格式了,体积小了很多,但在Safari上图片直接裂开不显示。查了下说Safari 14之前不支持WebP,但用户还在用老版本,这咋办?
试过用<picture>标签做降级,但写法不太确定对不对,现在代码是这样的:
<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="示例图">
</picture>
这样写在Chrome里没问题,但在Safari 13上还是加载不了图片,是不是哪里漏了?
img标签里的 JPG 图片路径正确。Safari 13确实不支持 WebP,记得检查图片路径,特别是相对路径容易出问题。另外别忘了在服务器端设置正确的 MIME 类型,不然浏览器会拒绝加载。
对了,如果你用的是 CDN 或者静态资源服务,最好也确认下它们对不同格式的支持情况。我之前遇到过CDN缓存导致的问题,浪费了不少时间找bug。
实在不行的话,考虑给 Safari 用户提供手动下载最新版浏览器的提示吧,虽然用户体验不太好,但这确实是解决兼容性问题最直接的办法。
首先把
img标签加上loading="lazy"虽然不是必须,但能优化性能。重点是确保 fallback 的 JPG 图片路径正确。另外建议检查下文件名大小写是否一致,Safari 对路径很敏感。要是还不行,可能是 WebP 支持问题。
说到浏览器兼容,Safari 真的是让人头疼,尤其是老版本。如果实在要支持 Safari 13及以下,建议用 JavaScript 做个检测,不支持 WebP 就直接加载 JPG。
这种场景我通常会写个简单函数:
这东西虽然麻烦,但没办法,谁让苹果更新这么慢呢。