使用image.complete来查找图像是否缓存在chrome上
Using image.complete to find if image is cached on chrome?
我一直在试图找出外部图像是否缓存在浏览器上与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上运行良好,但在chrome上总是返回false。
有人知道如何使它与chrome工作吗?
我用纯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, Chromium 14)。很可能你已经禁用了Chrome浏览器的缓存。如果没有,检查所提供图像的HTTP头(Cache-control
是否存在?)。这个标题存在于Google示例
如果你想检测一个图像何时完成加载,看看这个问题。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 如何在从浏览缓存加载页面时执行javascript
- 用于检查数组中是否存在元素的javascript自定义方法
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在将事件处理程序添加到不存在的类
- 是否存在React Native“;WEB代码安全防护”;
- 一个密码测试程序,如果存在空格,它会提醒用户
- 验证会话中是否存在对象's数组
- 将此 pdf 保存在 ionic 上的缓存/本地存储中
- 我的网站存在火狐缓存问题
- 当promise中发生错误时,数据缓存在服务器或客户端上,或者根本不缓存在AngularJS中
- Javascript:检测是否缓存了请求的文件,如果存在较新版本,则删除缓存
- GhostDriver 在现有元素上执行 javascript 时引发陈旧异常“元素在缓存中不存在”
- JS -画布从图像文件-工作仅与浏览器缓存存在
- 强制缓存控制:无缓存在Chrome浏览器通过XMLHttpRequest在F5重新加载