图片加载:JavaScript onLoad和Image::complete (FireFox 3)



当将图像加载到JavaScript Image对象中时,我会假设,一旦load事件被触发为图像i,那么i.complete应该是true。要么没有发生,要么(更有可能,我怀疑)我的jQuery/JavaScript代码中有错误。

代码(剥离的方式,但我很自信,相关的是在这里)

$img = $('<img />');  // This line added by edit for clarification
var eventData = {
        sheet: this,
        resolution: resolution,
        i: i,
    };
$img.bind('load', eventData, onTileLoad);
$img.attr('src', tile.src);
onTileLoad = function(ev) {
    var sheet = ev.data.sheet;
    var resolution = ev.data.resolution;
    var i = ev.data.i;
    if (!this.complete) {
        console.log('Image load not complete: sheet ' + sheet.sheetName + 
                ', resolution ' + resolution + ' tile ' + i)
    };
    ....
};

这个控制台日志触发了我的一些映像,但绝不是大多数映像。我认为它不应该触发。不管怎样,我使用的是FireFox 3.6.18(因为它非常稳定,并且有很好的开发工具)。

有谁知道是怎么回事吗?

$img指的是什么?

onTileLoad函数中,this$img。如果$img是一个jQuery对象(就像它看起来的那样),它没有complete属性。complete属性只在DOM对象上设置。

看这个test case

希望这对你有帮助,

欢呼

最新更新