使用image.complete找到,如果图像是在铬缓存?使用image.complete找到,如果

2019-05-12 03:21发布

我一直在试图找出是否有外部图像与JS浏览器的缓存,这是我到目前为止的代码:

<html>
    <head></head>
    <body>

    <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>

    <script>

        function cached( url ) {
            $("#imgx").attr({"src":url});
            if(document.getElementById("imgx").complete) {
                return true;
            } else {
                if( document.getElementById("imgx").width > 0 ) return true;
            }

            return false;
        }

    </script>

    <img id="imgx" src=""  />

    <script>

        $(document).ready(function(){
            alert(cached("http://www.google.com/images/srpr/nav_logo80.png"));
        });

    </script>

    </body>
</html>

它完美的Firefox,但它始终返回false对铬。

是否有人有任何想法如何使它与Chrome浏览器?

Answer 1:

我重写普通的JavaScript代码,以使其更加独立于jQuery的。 核心功能并没有改变。 小提琴: http://jsfiddle.net/EmjQG/2/

function cached(url){
    var test = document.createElement("img");
    test.src = url;
    return test.complete || test.width+test.height > 0;
}
var base_url = "http://www.google.com/images/srpr/nav_logo80.png"
alert("Expected: true or false\n" +
      cached(base_url)
      + "\n\nExpected: false (cache-busting enabled)\n" +
      cached(base_url + "?" + new Date().getTime()));
//false = not cached, true = cached

第一次,我得到false and false 。 当我再次运行该代码,我得到的true and false


使用.complete.height + .width给出了预期的效果(FF 3.6.23,铬14)。

这很可能是您禁用了高速缓存,在Chrome浏览器。 如果没有,请检查HTTP标头的服务形象(是Cache-control礼物?)。 这头在谷歌样品存在

如果您想在一个图像有(没有)载入完成检测,看看这个问题 。



文章来源: Using image.complete to find if image is cached on chrome?