识别网络错误的Javascript
问题描述:
编写一个基于浏览器的工具,它击中了一些第三方URL来看看我们是否可以打的URL或不
约束
1. Has to be browser based
2. I don't own the URL list (read it from a server and is maintained by someone else)
3. Some of the URLs (ie the servers) are not CORs enabled.
传统上,我会用XMLHttpRequest
并做了类似this的查看是否有网络E rrors。但是,由于这些是跨域请求,因此在飞行前一步失败。
到目前为止,我所做的只是一种破解。这是代码。基本上动态创建一个脚本标记,以src作为我想要获取的url。
var createScript = function(whitelist){
var src = whitelist.url;
var script = document.createElement('script');
script.setAttribute('src', src);
script.onload = function() {
whitelist.success = true;
$scope.$digest();
return;
};
script.onerror = function (foo) {
console.error(src,' ',foo);
return;
};
angular.element(document.body).append(script);
};
伊夫看了对象传递给onerror
但伊夫未能得到任何来自它有用,这将有助于我理解为什么会失败。此外,网络错误和403s都遇到了错误处理程序。对于我而言,成功或失败的访问网址是由网络错误决定,而不是获得例如403
问题
在给定的约束条件是有办法,我可以找出成功或者 失败。就Im而言,成功或失败与您是否可以 访问URL无关。
答
我最终为此写了一个可安装的chrome-app和chrome扩展。 任何一个都可以根据您的使用情况使用。如果您想从第三方网页使用相同的功能,则扩展名更多。
https://github.com/sajit/clienthealthcheck < - Chrome应用
https://github.com/sajit/healthcheck_api < - Chrome扩展