微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html – 为什么Chrome的img元素的onerror事件只触发一次?

当所有其他浏览器(IE7,8,9,FF,Opera和Safari)都重复调用它时,为什么Chrome只调用img元素的onerror事件?

有没有办法强制它再次重复攻击(在Chrome中)?

jsfiddle

HTML:

<div id="thisWorks">
    this works in Chrome. onerror event is called once.
    <img src="http://www.asdfjklasdfasdf.com/bogus1.png" 
        onerror="fixit(this);" 
        rsrc="http://eatfrenzy.com/images/success-tick.png" />
</div>

<div id="thisDoesNotWork">
    this does not work in Chrome. onerror event is not called twice.
    <img src="http://www.asdfjklasdfasdf.com/bogus1.png" 
        onerror="fixit(this);"
        rsrc="http://www.asdfjklasdfasdf.com/bogus2.png|http://eatfrenzy.com/images/success-tick.png" />
</div>

JAVASCRIPT:

function fixit(img)
{
    var arrPhotos = img.getAttribute('rsrc').split('|');

    // change the img src to the next available
    img.setAttribute('src',arrPhotos.shift());

    // Now put back the image list (with one less) into the rsrc attr
    img.setAttribute('rsrc',arrPhotos.join('|'));

    return true;    
}

编辑:
根据@Sunil D.关于Chrome由于initial fiddle示例中www.asdfjklasdfasdf.com域名无效而未发布新查询评论,我继续更改域名以匹配成功图片的域名,但是不同的文件名所以它仍然是404.这将证明它不是无效的域名导致Chrome在第二次尝试时纾困.

编辑:
更新了小提琴,并将jquery的使用简单地删除,并将其排除在外.

解决方法

我尝试过上面提到的方法,setAttribute(‘src’,null)有副作用,即添加一个请求.

最后,我用

setTimeout(function(){ imgElement.src = 'http://xxxx'; },0)

,这个有效!

例如,请参见jsfiddle.

原文地址:https://www.jb51.cc/html/231812.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐