当前位置: 代码迷 >> JavaScript >> IE在每个img src attr更新上调用jquery错误处理程序
  详细解决方案

IE在每个img src attr更新上调用jquery错误处理程序

热度:83   发布时间:2023-06-05 11:45:41.0

以下代码在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');
}

您的代码中有几次错字。

$('.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')
    })
})
  相关解决方案