javascript - 使用 Javascript 加载和缓存图像并了解 HTTP 状态代码

标签 javascript jquery html angularjs caching

我正在尝试预加载图像 以删除那些会以 404 或 500 HTTP 状态代码响应的图像。 我需要知道什么是 HTTP 状态代码并且我需要缓存图像。这是我的问题:

  1. 如果我使用 Image或虚拟 <img/>标记,图像已缓存,但我不知道 onerror 中的 HTTP 状态代码回调。
  2. 如果我使用 XHR($.get 用于 jQuery 或 $http.get 用于 Angular),我会得到状态代码但图像未被缓存(真正的 <img/> 将再次加载数据)。我认为我无法控制缓存,因为这是浏览器规则。

是否有一种方法可以让 浏览器 缓存 HTTP 状态代码和图像?

最佳答案

通过让 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 限制

或者如果这是在分配给图像元素的指令中:

 link:function(scope, element){
    element[0].onerror = function(err){
       $.get(element[0].src).fail(xhr){
          //parse xhr details and do something with them      
       })
    }
 }

关于javascript - 使用 Javascript 加载和缓存图像并了解 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40023534/

相关文章:

javascript - 使用 angularjs 创建一个简单的 hello world 应用程序

javascript - 删除 jquery 中的动态表单字段时出现问题

javascript - 如何在不刷新的情况下显示php传递的结果给ajax

html - Odoo 和 Qweb : render HTML in quotation report

html - 隐藏相对位置和溢出的容器没有高度

javascript - FB.getLoginStatus 在 Chrome 中不起作用,即使沙盒禁用

javascript - Vue.js Avoriaz 单元测试在使用 vue-i18n 时产生翻译警告

javascript - 将 jquery 代码转换为 JavaScript

javascript - 将事件处理程序绑定(bind)到由 jQuery .html() 函数插入的元素上

jQuery .css() 顶部和底部不工作