2014-07-24 19 views
0

这是我在Javascript detect static <script> load failues试图问的问题,但我想我可能会困惑这个问题。<script>标签检测网络错误

我的问题是:假设我在某些HTML中有一个<script>标记,它不会加载,不是因为代码中的任何错误,而是因为网络错误。有没有办法通过编程的方式通知这个网络错误?我发现我可以将一个onerror事件附加到脚本标记上,但回调函数只能传递给它的对象Event,并且没有关于网络故障的信息。相比之下,如果我通过Ajax动态加载脚本,我有一个XHR对象,它有一些我可以在其中使用的信息。我正在寻找与静态<script>标签相媲美的东西。

基本上我想是这样的

<script src="/path/to/script.js" type="text/javascript" onerror="handleError(event)"></script> 

<script type='text/javascript'> 
     function handleError(event) { 
      // do stuff; 
     } 
</script> 

其中“东西”将包括加载阻止脚本的网络错误的详细信息。

回答

1

请发布代码来帮助我们为您提供帮助。

那么无论是页面加载或它没有,网络错误不能导致脚本错误,除非外部文件加载失败或ajax命令返回非200状态。如果问题来自ajax,则可以在响应代码准备好时测试ajax对象,如果响应代码不是200,则可以运行通知或重试代码,如果错误来自外部.js文件,无论以何种原因加载向js文件添加一个变量,例如var loaded = true;然后在你的主文件中检查它并根据需要做出反应。

+0

我明白我可以做到这一点。我在说我想明确知道是什么导致它无法加载 - 是网关超时,中止请求还是别的什么。 – Dan

+0

无法测试嵌入式资源上的400/500错误我不相信,ajax会响应标准响应类型,所以ajax可以提供相关信息,但不会嵌入.js文件。 – Wobbles

+0

谢谢。我担心情况可能如此,但无法证实。 – Dan