下面这个处理图片不同的加载状态的代码,怎么优化,或者有没有更好的方案?

这段代码是判断图片不同加载状态的(网上copy来的)。
加载中显示加载动画,
加载完成后,显示图片,
加载失败时显示失败图片。
请问,这个方案有没有需要优化的地方帮我指出,如果有更好的方案也请给我指点下。谢谢。

<html>
<title>js图片未加载完显示loading效果</title>
<body>
    <style>
        img {
            float: left;
            width: 200px;
            height: 200px;
            margin: 0 10px 10px 0
        }
    </style>
    <script>
        //判断浏览器
        var Browser = new Object();
        Browser.userAgent = window.navigator.userAgent.toLowerCase();
        Browser.ie = /msie/.test(Browser.userAgent);
        Browser.Moz = /gecko/.test(Browser.userAgent);

        //判断是否加载完成
        function Imagess(url, imgid, callback) {
            var val = url;
            var img = new Image();
            if (Browser.ie) {
                img.onreadystatechange = function () {
                    if (img.readyState == "complete" || img.readyState == "loaded") {
                        callback(img, imgid);
                    }
                }
            } else if (Browser.Moz) {
                img.onload = function () {
                    if (img.complete == true) {
                        callback(img, imgid);
                        console.log(img.style, imgid);
                    }
                }
            }
            //如果因为网络或图片的原因发生异常,则显示该图片
            img.onerror = function () {
                img.src = "http://www.86y.org/images/failed.png"
            }
            img.src = val;
        }

        //显示图片
        function checkimg(obj, imgid) {
            document.getElementById(imgid).style.cssText = "";
            document.getElementById(imgid).src = obj.src;
        }
        //初始化需要显示的图片,并且指定显示的位置
        window.onload = function () {
            var imglist = document.getElementById("imagelist").getElementsByTagName('img');
            for (i = 0; i < imglist.length; i++) {
                imglist[i].id = "img0" + i;
                imglist[i].style = "background:url(loading.gif) no-repeat center center;";
                // console.log(imglist[i].getAttribute("data"),imglist[i].id,checkimg);
                Imagess(imglist[i].getAttribute("data"), imglist[i].id, checkimg);
            }
        }
    </script>
    <div id="imagelist">
        <img data="http://pics.sc.chinaz.com/files/pic/pic9/201805/wpic1150.jpg" />
        <img data="http://t2.hddhhn.com/uploads/tu/201805/9999/27d145024a.jpg" />
        <img data="http://www.smashingapps.com/wp-content/uploads/2013/05/uikitsforwebmobile39.jpg" />
        <img data="http://t2.hddhhn.com/uploads/tu/201805/9999/69159ddda4.jpg" />
        <img data="http://t2.hddhhn.com/uploads/tu/201805/9999/edb3c6c514.jpg" />
    </div>
</body>

</html>
阅读 896
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题