如何有两个回退图像占位符
How to have two fallback image placeholders
这对于填充占位符代替不存在的图像非常有效。
<img src="cantfind.jpg" onError="this.onerror=null;this.src='http://placehold.it/600x600?text=No Picture'">
我好奇的是是否有办法在onError事件中做两个占位符。所以我尝试这样做,但Javascript没有来找我。有什么想法吗?我尝试将 url 分配给变量,但我不确定如何在不执行一些混乱的 xhr 请求或其他操作的情况下检查第一个占位符是否失败。
检查当前src
是否等于其中一个占位符,并相应地分配一个新的 url:
onerror="
var p1='http://.......', p2='http://......';
if (this.src == p1) this.src = p2; else if (this.src != p2) this.src = p1;
"
这是通过递归事件处理实现的一种方法...尝试加载,如果出现错误,请尝试从数组中加载第一个元素,并将其设置为失败时下一个索引的 ERROR,直到您命中超出范围的索引,此时停止。
这迎合了源数组中任意数量的已定义占位符。
<img id="img" src="example.jpg" onerror="loadNextImage(0);" alt="logo image">
<script>
var imagesDir = 'path/to/images/directory/';
var sources = [ '01.jpg', 'test.gif', 'bamf.jpg', 'foobar.jpg' ];
var index = 0;
function loadNextImage(index) {
var image = document.getElementById('img');
if (index < sources.length) {
console.log('Index:', index, sources[index]);
image.onerror = function() { loadNextImage(index + 1); };
image.src = imagesDir + sources[index];
} else {
image.alt = 'No suitable image found to display';
}
}
</script>
相关文章:
- 嵌套两个以上任务的回调
- 使用包含过滤器在环回中连接两个模型
- 如何处理在javascript中访问数据结构的两个回调
- 编写一个使用传递两个参数的回调的承诺
- Dojo 两个 XHR 请求和回调函数仅在两者完成时触发
- 一个回调两个异步函数,一个是谷歌 api getDistanceMatrix
- 由双管道分隔的两个回调
- 带有两个参数的“data”回调不会将buffer.toString()打印为字符串
- 两个异步函数之后的回调
- 来自两个函数的 Ajax 回调
- 将字符串转换为日期对象,添加两个小时并转换回字符串(JavaScript)
- JavaScript原生Promise对两个结果执行回调
- 比较两种回退机制加载本地jQuery库的方法
- JavaScript:如何构造两个以上的回调
- 如何将具有两个回调的函数调用转换为promise
- 在两个独立的成功http请求后激发回调
- 函数内的两个回调函数未同步调用
- 如何链接同一对象的两个回调类型增益函数
- Chrome.webstore.install调用两个回调?为什么
- 如何有两个回退图像占位符