2014-11-21 74 views
1

语境:识别网络错误的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无关。

回答