懒加载+锚点BUG处理

由于移动端大小有限,图片的实际大小会等比缩小,而如果此时应用锚点,则会出现锚点失效的情况,那么如何解决这种情况呢,话不多说,请看代码

$("img[usemap]").each(function () {
                var img = $(this);
                var newImg = new Image();
                newImg.onload = function () {
                    $("map[name=" + img.attr("usemap").replace(/#/, "") + "] area").each(function () {
                        var val = $(this).attr("coords").split(",");
                        for (var i in val) {
                            val[i] = parseInt(parseInt(val[i]) * img.width() / newImg.width);
                            newImg.width;
                        }
                        $(this).attr("coords", val.join(","));
                    })
                };
                newImg.src = img.attr("src");
            });

大致逻辑也就是,在页面加载之后,对于每一个应用锚点的图片,重新计算其锚点的实际位置。

如果你认为,这就算完了的话,可有点天真了,上面说到,是在页面时重新计算,那么,如果采用了懒加载呢?懒加载的图片真正的加载时机是在触发加载条件的时候,于是针对懒加载的图片我们还需要进行处理,继续代码:

$("img[usemap]").each(function(){
                var img = $(this);
                img.get(0).onload=function(){
                    var newImg = new Image();
                    newImg.onload = function(){
                        var w1=img.width(),w2=newImg.width;
                        $("map[name=" + img.attr("usemap").replace(/#/, "") + "] area").each(function(){
                            var val = $(this).attr("coords").split(",");
                            for(var i in val){
                                val[i] = parseInt(parseInt(val[i]) * w1 /w2);
                            }
                            $(this).attr("coords", val.join(","));
                        })
                    };
                    newImg.src = img.attr("src");
                };

(未完待续)

你可能感兴趣的:(懒加载+锚点BUG处理)