求助:HTML5 Picture元素无法触发JPG降级加载的问题
问题
测试HTML5 <picture> 元素时,预期默认加载WebP格式图片,JPG作为降级备选方案。但当WebP图片地址不存在时,Chrome和Safari仅加载WebP失败,并未尝试加载存在的JPG,导致图片区域空白或显示问号图标。请问这段代码是否存在问题?
原代码:
<picture class="item-slide" data-slideid="1"> <source srcset="https://imgnotexist.com/test.webp" type="image/webp"> <img src="https://i.sstatic.net/QeSoC.jpg"> </picture>
问题原因
<picture> 元素的工作逻辑是:浏览器先检查 <source> 指定的格式是否支持,若支持则尝试加载对应资源;只有当浏览器不支持该格式时,才会回退到 <img> 标签的资源。
在测试场景中,Chrome和Safari都支持WebP格式,所以会优先尝试加载WebP资源。当该资源地址不存在导致加载失败时,浏览器不会触发降级到JPG的逻辑——因为它认为格式是兼容的,只是资源本身不可用,而非格式不支持。
解决方案
使用 <object> 标签替代 <picture>,它会在指定资源加载失败(无论格式不支持还是地址无效)时,自动渲染内部的降级内容:
<object data="https://imgnotexist.com/test.webp" type="image/webp"> <img src="https://i.sstatic.net/QeSoC.jpg"> </object>
内容的提问来源于stack exchange,提问作者miles_holt
相关产品推荐
相关产品推荐

