问题描述
以下代码在IE以外的所有浏览器中都可以正常工作。
逐步执行调试器时,IE将用正确的图像替换src,它将按原样出现在屏幕上,但随后调用错误函数并将其替换为missing.jpg图像。
删除错误处理程序可以使其在包括IE在内的所有浏览器中正常工作,但是当缺少图像时,我希望能够显示missing.jpg图像。
我已经尝试了缓存修复,但是没有用。
更新:我已经为每个事件处理程序添加了警报,它看起来像是在load()甚至无法启动之前就返回了IE error(),但是在错误发生之后,加载将正确完成。
我想了解正在发生的事情,并想知道是否有替代方法来显示missing.jpg图像,而不使用错误处理程序。
的HTML
<span id='imageButton' image='testing.jpg'>Click Here</span>
<img id='testImage' />
JS
$('.imageButton').bind('click', function (event) {
var imageattr = $(this).attr('image');
$('#testImage').attr('src', imageattr);
}
$('#cardImage').error(function () {
$('#testImage').attr('src', 'missing.jpg');
}
1楼
Andrew
0
已采纳
2015-07-30 19:09:24
您的代码中有几次错字。
$('.imageButton').bind('click', function (event) {
var imageattr = $(this).attr('image');
$('#testImage').attr('src', imageattr);
}) // missing )
$('#cardImage').error(function () {
$('#testImage').attr('src', 'missing.jpg');
}) // missing )
此外, jQuery.error()
方法 ,所以这是可以预料的,它并没有在一些浏览器。
您可以做的是使用AJAX来获取图像,但是如果找不到,则恢复为丢失的图像。
$('.imageButton').on('click', function fetchImage(e){
e.preventDefault();
var $img = $('#testImage'),
src = $(this).attr('image');
$.get({
url: src,
success: function(data){
$img.attr('src', data)
},
dataType: 'image/jpg' // or 'image/png', 'image/gif', etc.
}).fail(function(data){
$img.attr('src', 'missing.jpg')
})
})