我正在尝试预加载图像以删除那些会响应404或500 HTTP状态代码的图像.我需要知道什么是HTTP状态代码,我需要缓存图像.这是我的问题:
>如果我使用图像或虚拟< img />标记,图像被缓存但我无法知道onerror回调中的HTTP状态代码.
>如果我使用XHR($.get用于jQuery或$http.get用于角度),我会获得状态代码,但图像不会被缓存(真正的< img />会再次加载数据).我认为我无法控制缓存,因为这是一个浏览器规则.
解决方法
通过使用onerror触发请求以获取更多详细信息,使用两者的组合
var img= document.createElement('img'); img.src="...."; img.onerror = function(err){ $.get(img.src).fail(xhr){ //parse xhr details and do something with them }) }
请注意,这将受到跨域源的CORS限制
或者,如果这是在指定给image元素的指令中:
link:function(scope,element){ element[0].onerror = function(err){ $.get(element[0].src).fail(xhr){ //parse xhr details and do something with them }) } }