首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在html <img>的src属性无效的情况下输入默认图像?

在html <img>的src属性无效的情况下输入默认图像?
EN

Stack Overflow用户
提问于 2009-06-11 20:42:58
回答 17查看 353.6K关注 0票数 305

有没有办法在HTML标记中呈现默认图像,以防src属性无效(仅使用<img> )?如果没有,你会用什么轻量级的方式来解决这个问题呢?

EN

回答 17

Stack Overflow用户

发布于 2017-03-10 19:17:43

简单的img元素不是很灵活,所以我把它和一个图片元素结合起来。这样就不需要CSS了。发生错误时,所有源集都设置为回退版本。未显示断开的链接图像。它不会加载不需要的镜像版本。图片元素支持响应式设计和浏览器不支持的类型的多个回退。

代码语言:javascript
复制
<picture>
    <source id="s1" srcset="image1_not_supported_by_browser.webp" type="image/webp">
    <source id="s2" srcset="image2_broken_link.png" type="image/png">
    <img src="image3_fallback.jpg" alt="" onerror="this.onerror=null;document.getElementById('s1').srcset=document.getElementById('s2').srcset=this.src;">
</picture>
票数 22
EN

Stack Overflow用户

发布于 2009-06-11 12:51:23

代码语言:javascript
复制
<style type="text/css">
img {
   background-image: url('/images/default.png')
}
</style>

请确保输入图像的尺寸以及是否要平铺图像。

票数 16
EN

Stack Overflow用户

发布于 2009-06-11 13:07:02

我认为仅仅使用HTML是不可能的。然而,使用javascript,这应该是可行的。最基本的是,我们遍历每个图像,测试它是否完整,如果它的naturalWidth是零,那么就意味着没有找到它。代码如下:

代码语言:javascript
复制
fixBrokenImages = function( url ){
    var img = document.getElementsByTagName('img');
    var i=0, l=img.length;
    for(;i<l;i++){
        var t = img[i];
        if(t.naturalWidth === 0){
            //this image is broken
            t.src = url;
        }
    }
}

像这样使用它:

代码语言:javascript
复制
 window.onload = function() {
    fixBrokenImages('example.com/image.png');
 }

在Chrome和Firefox中测试

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/980855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档