Javascript 使用JS检测特定错误(403)
我试图捕获我的页面上的一个潜在错误,该页面有一个URL集合(在页面加载时检索)到各种资源,这些资源在需要时加载 但是,这些资源仅在设定的时间内可用,因此如果用户长时间闲置页面,URL可能不再有效,并可能返回403 我目前正在使用以下方法检测资源上的错误:Javascript 使用JS检测特定错误(403),javascript,jquery,http-status-code-403,Javascript,Jquery,Http Status Code 403,我试图捕获我的页面上的一个潜在错误,该页面有一个URL集合(在页面加载时检索)到各种资源,这些资源在需要时加载 但是,这些资源仅在设定的时间内可用,因此如果用户长时间闲置页面,URL可能不再有效,并可能返回403 我目前正在使用以下方法检测资源上的错误: $(".identifier").on("error", function () { console.log("Error on resource load"); }); 但是我可以检测到特定类型的错误/错误代码吗?e、 g.403权
$(".identifier").on("error", function () {
console.log("Error on resource load");
});
但是我可以检测到特定类型的错误/错误代码吗?e、 g.403权限错误,而不是一般的“存在错误”。如果可能的话,我希望能够对不同的错误做出不同的反应。假设您在一个数组中拥有指向资源的所有可用URL,例如
var resources = [
"http://url/to/resource-one.fiel",
"http://url/to/resource-two.fiel"
]
然后,您可以使用以下函数检查这些资源的http响应,方法是在数组上循环并将每个资源传递给checkResources
function checkResource (url, index) {
var req = new XMLHttpRequest();
req.open('HEAD', url, true);
req.send();
if (req.status === 404) {
return index;
}
if (req.status === 403) {
return index;
}
};
或者使用不带循环的特定URL并删除函数中的索引参数,
可能会返回URL。换句话说,执行一个ajax头请求,它将只返回头资源,而不是资源本身
您还可以按名称获取所有标题信息或特定标题信息,如下所示
xmlhttp.open('HEAD', 'path/to/your/resource', true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
console.log(xmlhttp.getAllResponseHeaders()); // get all header info
console.log(xmlhttp.getResponseHeader("Last-Modified")); // get by name
}
}
xmlhttp.send(null)
也许这能帮你,嗯,好的,我可以查一下资源主管。然而,我希望我能以某种方式读取返回的错误,而不是每次加载某个内容时将请求加倍。您是否通过ajax请求资源?这些资源是以标准HTML5视频元素显示的视频文件。我正在设置视频元素的源,浏览器正在获取内容。据我所知,错误事件处理程序只提供与脚本和文件相关的错误信息。您试图捕获的错误与http请求相关,因此,如果您试图捕获这些错误并在javascript中获取有关这些错误的信息,则必须使用ajax,或者使用视频元素上的错误事件处理程序并检查networkState属性,但这不会提供有关http响应头的信息。您找到了一个优雅的解决方案吗?