404状态不会触发xhr.onerror(),因为从技术上讲这不是错误;404本身是有效的响应。
一种解决方案是使用loadend()处理函数,无论如何触发。然后检查404的状态,或您感兴趣的状态。
xhr = new XMLHttpRequest();xhr.open("GET", url, true);xhr.onloadend = function() { if(xhr.status == 404) throw new Error(url + ' replied 404');}XMLHttpRequestUpload存在相同的方法。不幸的是,我们的浏览器供应商不允许我们在2017年以编程方式抑制网络错误。



