【问题标题】:jQuery Image load error not being called after page load页面加载后未调用jQuery图像加载错误
【发布时间】:2013-08-09 08:26:23
【问题描述】:

您好 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,它偶尔会匹配我的网络服务器上包含许多图像的图像。

【问题讨论】:

  • html 中的图像无法返回一些错误。可能就是这样,url不存在。尝试检查jQuery中是否存在url。
  • 显示 getImgUrl 函数。
  • 问题来了,图像可能会以 404 或其他错误的形式返回错误。我遇到的问题本质上是在页面上删除一个元素并替换之后,即使我有一个 jQuery 函数在多个元素(例如所有图像)的范围内指定,jQuery 拒绝识别该元素存在.

标签: javascript jquery onerror


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多