页面加载后未调用jQuery Image加载错误

时间:2013-08-09 08:26:23

标签: javascript jquery onerror

Hello Stack Overflow社区,最近,我一直在使用jQuery进行快速图像显示。它有一个可以随机挑选和显示的可能图像列表。问题是,在页面加载完成后,如果图像无效,jQuery将停止检测图像加载错误。

我目前查找和修复错误的方法如下:

$('img').error(function() {
    $(this).attr('src',getImgUrl());
});

在正常情况下(例如正在加载的页面),即使连续指定了多个无效图像,也会选择有效图像。但是,在页面加载完成后,如果选择了无效图像并且无法加载,则甚至不会调用此函数。但奇怪的是,如果我为所有图像添加一个onerror属性,无论页面是否是新加载的,它们总是从onerror中调用,那么为什么jQuery会出现这个问题呢?感谢任何帮助。谢谢。

更新: 它似乎也出现在其他jQuery函数中,例如click。

更新: jQuery识别页面上的新元素(例如新创建的图像)似乎是一个问题。

请求getImageUrl:

的人更新
function getImgUrl()
{
    var text = (Math.round(Math.random() * 3)).toString();
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for(var i=0; i < 4; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return '/' + text;
}

所有这一切都是选择一个随机URL,偶尔会匹配我的网络服务器上有许多图像的图像。

1 个答案:

答案 0 :(得分:1)

看起来jQuery在页面上识别新元素时出现问题,所以我修复它的方式不是删除和添加图像到页面,我只是在进行更改时编辑了现有的图像SRC,这很奇怪, jQuery错误函数完美地响应。

这是我最后提出的所有感兴趣的刷新功能:

function refreshImages()
{
var images = 10;

for(var i = 0;i < images;i++)
{
    var url = getImgUrl();

    $('#thumb' + i).attr('src',url);

    if(i == 0)
    {
        $('#fullimage').attr('src',url);
        $('.thumb').css('border','2px solid white');
    }
}
resize();
}