1

任何想法为什么我需要至少 300 毫秒的超时时间才能让 imagesLoaded 在 Firefox 上运行?如果我设置得更少,imagesLoaded 事件会在图像加载之前立即触发。我使用的是最新版本 3.1.x。

<html>
    <script src="bower_components/jquery/jquery.min.js"></script>
    <script src="bower_components/imagesloaded/imagesloaded.pkgd.js"></script>
<head>
</head>
<body>
    <div id=myimage><img style="height:100px" src="http://www.worldcarwallpapers.com/wp-content/uploads/2013/07/new-2014-audi-r8-wallpaper.jpg"/></div>
    <script>
        $(document).ready(function(){
            setTimeout(function(){
                var elem = $("#myimage");
                elem.imagesLoaded(function(){
                    alert("ready!!")
                });
            }, 100)
        })
    </script>
</body>
</html>
4

1 回答 1

1

在这个库的文档中,作者以不同的方式使用它(这里)。问题可能是当库启动时,页面加载时可能不清楚。我认为您不应该为一张图片使用库。你可以在你的脑海中添加这个

<script>
HTMLImageElement.prototype.imageLoaded = function(callback){
    if(this.complete && this.naturalWidth>0){
        callback();
    }else{
        this.addEventListener('load', callback, false);
    }
};
</script>

然后在身体负荷上附加您的事件,如下所示:

$(function(){
    var elem = document.getElementById("myimage");
    elem.imageLoaded(function(){
        alert("ready!!")
    });
});

这不适用于图像加载错误。

于 2014-07-29T18:12:51.310 回答