java中img属性_如果html img的src属性无效,请输入默认图像?

回答(19)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

你问过一个只有HTML的解决方案......

/p>

"http://www.w3.org/TR/html4/strict.dtd">

Object Test

example

由于第一个图像没有使用不支持object的旧浏览器,因此它将忽略该标记并使用 img 标记 . 有关兼容性,请参见caniuse网站 . 截至2018年,这个元素得到了ie6的所有浏览器的广泛支持 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这对我很有用 . 也许你想用JQuery挂钩事件 .

foo.jpg

更新了jacquargs错误保护

Updated: CSS only solution 我最近看到Vitaly Friedman演示了一个我不知道的优秀CSS解决方案 . 我们的想法是将 content 属性应用于损坏的图像 . 通常 :after 或 :before 不适用于图像,但是当它们重新应用时're broken, they' .

nothere.jpg

img:before {

content: ' ';

display: block;

position: absolute;

height: 50px;

width: 50px;

background-image: url(ishere.jpg);

正如小提琴所示,破坏的图像本身并没有被删除,但这可能解决了大多数情况下没有任何JS也没有CSS的问题 . 如果您需要在不同位置应用不同的图像,只需区分一个类: .my-special-case img:before { ...

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在Spring in Action 3rd Ed中找到了这个解决方案 .

Image1.jpg

Update: 这不是HTML唯一的解决方案... onerror 是javascript

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

img {

background-image: url('/images/default.png')

}

请务必输入图像尺寸以及是否要图像平铺 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我认为只使用HTML是不可能的 . 但是使用javascript这应该是可行的 . Bassicly我们遍历每个图像,测试它是否完整,如果它的naturalWidth是零那么这意味着它没有找到 . 这是代码:

fixBrokenImages = function( url ){

var img = document.getElementsByTagName('img');

var i=0, l=img.length;

for(;i

var t = img[i];

if(t.naturalWidth === 0){

//this image is broken

t.src = url;

}

}

}

像这样使用它:

window.onload = function() {

fixBrokenImages('example.com/image.png');

}

在Chrome和Firefox中测试过

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

If you're using Angular/jQuery then this might help...

Explanation

假设 item 的属性 url 可能为null,那么当它出现时,图像将显示为已损坏 . 这会触发 onerror 属性表达式的执行,如上所述 . 您需要覆盖 src 属性,如上所述,但您需要jQuery来访问您的altSrc . 无法使用vanilla JavaScript .

可能看起来有点hacky但是在我的项目上节省了一天 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

使用可以添加多个图像的背景图像 . 我的情况:image1是主图像,这将从某个地方获取(浏览器正在执行请求)image2是在加载image1时显示的默认本 Map 像 . 如果image1返回任何类型的错误,用户将看不到任何更改,这将是干净的用户体验

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

angular2:

%7B%7Bfoo.url%7D%7D

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

仅限HTML的解决方案,唯一的要求是您知道要插入的图像的大小 . 不适用于透明图像,因为它使用 background-image 作为填充 .

我们可以成功使用 background-image 来链接在给定图像丢失时出现的图像 . 然后唯一的问题是破碎的图标图像 - 我们可以通过插入一个非常大的空字符来删除它,从而将内容推送到 img 的显示之外 .

img {

background-image: url("http://placehold.it/200x200");

overflow: hidden;

}

img:before {

content: " ";

font-size: 1000px;

}

This image is missing:

a.jpg

And is displaying the placeholder

仅限CSS的解决方案(仅限Webkit)

img:before {

content: " ";

background-image: url("http://placehold.it/200x200");

display: block;

width: 200px;

height: 200px;

position: relative;

z-index: 0;

}

This image is there:

436dd435611193c8adaa0589d89a7184.png

This image is missing:

a.jpg

And is displaying the placeholder

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

无法确定将尝试查看您的页面的无数客户端(浏览器) . 需要考虑的一个方面是电子邮件客户端是事实上的网络浏览器,可能无法处理这种棘手的问题......

因此,你应该包括一个带有DEFAULT WIDTH和HEIGHT的alt / text,就像这样 . 这是一个纯HTML解决方案 .

alt="NO IMAGE" width="800" height="350"

所以另一个好的答案会稍微修改如下:

NO IMAGE

我在Chrome中遇到了对象标记的问题,但我想这也适用于此 .

你可以进一步设置alt / text样式非常大...

所以我的答案是使用带有很好的alt / text后备的Javascript .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

一个带有 JQuery 的可调版本,在你的结尾加上这个文件:

$(function() {

$('img[data-src-error]').error(function() {

var o = $(this);

var errorSrc = o.attr('data-src-error');

if (o.attr('src') != errorSrc) {

o.attr('src', errorSrc);

}

});

});

并在您的 img 标签上:

...

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果您使用的是Angular 1.x,则可以包含一个指令,允许您回退到任意数量的图像 . fallback属性支持单个url,数组内的多个url或使用范围数据的角度表达式:

向角度应用模块添加新的回退指令:

angular.module('app.services', [])

.directive('fallback', ['$parse', function ($parse) {

return {

restrict: 'A',

link: function (scope, element, attrs) {

var errorCount = 0;

// Hook the image element error event

angular.element(element).bind('error', function (err) {

var expressionFunc = $parse(attrs.fallback),

expressionResult,

imageUrl;

expressionResult = expressionFunc(scope);

if (typeof expressionResult === 'string') {

// The expression result is a string, use it as a url

imageUrl = expressionResult;

} else if (typeof expressionResult === 'object' && expressionResult instanceof Array) {

// The expression result is an array, grab an item from the array

// and use that as the image url

imageUrl = expressionResult[errorCount];

}

// Increment the error count so we can keep track

// of how many images we have tried

errorCount++;

angular.element(element).attr('src', imageUrl);

});

}

};

}])

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

The above solution is incomplete ,它错过了属性 src .

this.src 和 this.attribute('src') 不相同,第一个包含对图像的完整引用,例如 http://my.host/error.jpg ,但该属性只保留原始值, error.jpg

正确的解决方案

foo.jpg

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

使用Jquery你可以做这样的事情:

$(document).ready(function() {

if ($("img").attr("src") != null)

{

if ($("img").attr("src").toString() == "")

{

$("img").attr("src", "images/default.jpg");

}

}

else

{

$("img").attr("src", "images/default.jpg");

}

});

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

对于任何图像,只需使用此JavaScript代码:

if (ptImage.naturalWidth == 0)

ptImage.src = '../../../../icons/blank.png';

其中 ptImage 是 document.getElementById() 获得的 标记地址 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

谷歌把这个页面扔到了“图像后备html”关键字,但由于上述情况并非如此,我正在寻找“低于9”的“svg后备支持”,我继续搜索,这就是我发现的:

picture

这可能是偏离主题的,但它解决了我自己的问题,也可能对其他人有所帮助 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

除了Patrick's精彩的答案,对于那些正在寻找跨平台角度js解决方案的人来说,在这里你去:

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

image.setAttribute('src','../icons/.png');

//check the height attribute.. if image is available then by default it will

//be 100 else 0

if(image.height == 0){

image.setAttribute('src','../icons/default.png');

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云日志服务SLS,打造云原生时代智能运维

2021年10月21日,阿里云针对企业运维难题,在云栖大会为大家带来了一场《智能运维论坛》的主题演讲。在会上,阿里云资深技术专家、日志服务技术负责人简志提出“云原生时代,企业业务数字化是对工程师们严峻的挑战。作为运维工程师&a…

实践分享丨企业上云后资源容量如何规划和实施

简介: 企业上云后,云上的预算直接影响上云的优先级、进度、深度。预算投入的多少,与业务发展和资源需求的容量评估紧密相关。精准的容量评估,可以使企业上云的预算规划更科学,同时也更贴合业务发展阶段的需要。本文分享…

如果让你来设计网络

作者 | 闪客sun 来源 | 低并发编程 你是一台电脑,你的名字叫 A 很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。 直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起…

【ESSD技术解读-01】 云原生时代,阿里云 ESSD 快照服务 助力企业级数据保护

简介:本文以云原生为时代背景,介绍了阿里云块存储快照服务如何基于高性能 ESSD 云盘提升快照服务性能,提供轻量、实时的用户体验及揭秘背后的技术原理。依据行业发展及云上数据保护场景,为企业用户及备份厂商提供基于快照高级特性…

又居家办公了,要签合同怎么办?

作者 | CSDN 来源 | CSDN云计算 本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动,寻访一百零一个数字化转型场景,聚…

【ESSD技术解读-03】阿里云块存储企业级特性之异步复制

简介: 在大数据时代,数据就是企业的核心资产,是企业的生命线。在现实世界中,灾难时有发生,当发生灾难时,容灾能力成为企业能否生存的关键。云上容灾服务,通常称为 DRaaS(灾难恢复即服…

【ESSD技术解读-04】ESSD Auto PL规格,引领IO性能弹性新方向

简介: 阿里云 ESSD 为云服务器 ECS 提供低时延、持久性和高可靠的块存储服务,成为云厂商全闪块存储的业界标杆。存储团队推出了 ESSD Auto PL 新的云盘规格,把性能与容量解耦,提供 IO 性能按需供给两大关键特性。AutoPL 具备的灵活…

全民营销时代,让私域流量变成业务增量需要几步?

本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动,寻访一百零一个数字化转型场景,聚合呈现并开通评选通道&#xff0…

跨越行业绊脚石,阿里云函数计算发布 7 大技术突破

简介: 2021 云栖大会现场,阿里巴巴研究员、阿里云智能云原生应用平台总经理 丁宇(叔同)重磅发布了函数计算的 7 大技术创新和突破,加速现代应用架构的革新。 Serverless 的本质是通过屏蔽底层的计算资源,来…

业内首款云原生技术中台产品云原生 Stack 来了

简介: 云原生 Stack 满足了各种典型场景下客户对于线下高集成平台的诉求,让企业数字话转型不受技术约束,专注业务本身,加速企业数字化迭代。 今天,企业数字化转型依然面临很大的挑战,虽然有很多新技术不断…

从质疑到成为必选项,低代码技术发展及 2022 展望

2022年,CSDN 「低代码产品开发者使用与体验」线上调研,正式开启!现在完成调研,就可参与抽奖活动,还有机会获得线下活动门票一张,和更多行业人士一起交流的机会。 前言 2022年低代码已经不是一个新鲜概念&am…

一图速览 | DTCC 2021大会,阿里云数据库技术大咖都聊了些什么?

简介: 3天9场干货分享,快来收藏吧! 10月18日~10月20日, 由国内知名IT技术社区主办的数据库技术交流盛会——DTCC 2021 (第十一届中国数据库技术大会)在京圆满落幕。大会以“数造未来”为主题,重点围绕数据架构、人工智…

AI深入应用,生态越加开放,开发者的机会在哪里?

作者 | 宋慧 出品 | CSDN云计算 IT 在吞噬一切,也在吞噬地球的能源消耗。 现在,全球的数据中心耗去了全球用电的 2%,到 2030 年时这个数字很有可能上升到 8%。风电,是地球上仅次于火电、水电的第三大电力来源,风电、光…

Serverless 工程实践 | 自建 Apache OpenWhisk 平台

简介: OpenWhisk 是一个开源、无服务器的云平台,可以在运行时容器中通过执行扩展的代码响应各种事件,而无须用户关心相关的基础设施架构。 OpenWhisk 简介 OpenWhisk 是基于云的分布式事件驱动的编程服务。OpenWhisk 提供一种编程模型&…

php弹幕技术轮询,PHP实现长轮询消息实时推送功能代码

入口文件index.html反ajax推送.send{color:#555;text-align: left;}.require{color:blue;text-align: right;}.content_box{text-align: center;margin: 20px;border: 1px solid #ddd;padding: 20px;}消息框12发送连接$(function(){//发送消息$(#btn_send).click(function(){va…

阿里云消息队列 RocketMQ 5.0 全新升级:消息、事件、流融合处理平台

简介: RocketMQ5.0 的发布标志着阿里云消息从消息领域正式迈向了“消息、事件、流”场景大融合的新局面。未来阿里云消息产品的演进也将继续围绕消息、事件、流核心场景而开展。 从“消息”到“消息、事件、流”的大融合 消息队列作为当代应用的通信基础设施&…

Gartner发布2022年政府行业重要业务趋势:数字化与创新、基础设施等

供稿 | Gartner 出品 | CSDN 云计算 时至2022年,政府领导人继续面临疫情带来不断变化的挑战,包括社会和经济领域的不确定因素。在2020年至2021年这段刚开始应对疫情的时期,为了满足公民服务和远程办公的需求,全球数字化程度呈指数…

随机段子api php,给博客添加一个名言段子语句随机播放的功能(集成Hitokoto)

之前浏览张戈的博客,发现他的文章页点赞下方有个很有意思的东西,一列显示一段句子,刷新一下会重新生成另外一个,主要包含段子、台词等有意思的话。余斗的博客不少内容都是参考张戈博客,虽然发现这个有趣的玩意很久了&a…

实践分享丨构建云上私有池(虚拟IDC)的5种方案详解

简介: 云上私有池系列终篇终于来了,本文将重点介绍构建云上的私有池(虚拟IDC)的多种方案和各自的优缺点,并给出相关的性价比优化建议。 本文作者:阿里云技术专家李雨前 摘要 围绕私有池(虚拟…

2021云栖大会开源引力峰会发布的战略合作,Grafana服务到底是什么?

简介: 这几天关注云栖大会的小伙伴一定会发现阿里巴巴合伙人、阿里云高级研究员蒋江伟(小邪)在云栖大会开源引力峰会的演讲中,特别提到了一个叫 Grafana 服务的产品,并特意花费一页 PPT 介绍了这一次合作。到底是一个什…