如果第一个onError不存在
,有没有办法使用onError两次<img class="media-object img-responsive" src="/img/product/{{ product_type_slug }}/thumb/{{ image_thumb }}" alt="{{ name }}"
onError="
this.onerror=null;
this.src='/img/product/swatch/{{ image }}';">
查找onError的onError以显示:
src='/img/product/{{ product_type_slug }}/old/{{ image_thumb }}'
所以如果原始图像不存在则显示swatch url,如果不存在则显示旧版。
答案 0 :(得分:1)
您可以使用javascript函数来处理此方案
function loadAlternative(element, list) {
var image = new Image();
image.onload = function() {
element.src = this.src;
}
image.onerror = function() {
if (list.length) {
loadAlternative(element, list);
}
}
// pick off the first url in the list
image.src = list.shift();
}
<img src="nope.jpg"
data-alternative="njet.jpg,neither.jpg,http://lorempixel.com/400/200/technics/1/"
onerror="loadAlternative(this, this.getAttribute('data-alternative').split(/,/))">
这是做什么的:
data-alternative
属性onerror
,则调用loadAlternative
函数,同时将元素(img
)和data-alternative
列表作为数组src
element
如果您需要使用某些默认图像,如果所有选项都失败,您可以修改image.onerror
函数来处理这样的空列表:
image.onerror = function() {
if (list.length) {
loadAlternative(element, list);
}
else {
element.src = '/every/other/option/has/failed.jpg';
}
}
请注意,您可以(在网络上这意味着:您将)最终会尝试加载图片,这可以通过让服务器检查是否存在图片来防止