2011-05-13 86 views
1

我试图在包含Javascript文件时检查URL是否返回404,403等。它工作正常,但我仍然在“Chrome开发人员工具”中遇到错误。检查url是否返回404

这是我的代码:

(function() { 
try 
    { 
      var ml = document.createElement('script'); 
     ml.type = 'text/javascript';  
     ml.async = true; 
     ml.id = 'monoloop_invoke'; 
     ml.onerror = function(){alert('File does not exist');}; 
     ml.src = 'http://somedomain.com/somefile.js'; 
      var s = document.getElementsByTagName('script')[0]; 
      s.parentNode.insertBefore(ml, s); 

    } 
catch(err) 
    { 
    alert('Error: '+err); 
    } 
     }) 
    ();  

如果文件不存在,它显示错误“文件不存在”从ml.onerror功能。这很好。但问题是,我仍然在我的控制台中看到如下错误行:

GET http://somedomain.com/somefile.js 403 (Forbidden) 

并且try/catch无法捕获此错误。

任何人都知道如何解决这个问题?或者在包含它之前存在URL是否存在另一种测试方法?我不能使用AJAX,因为我需要以跨域的方式使用它。如有必要,我可以使用jQuery。

编辑:它不显示在IE中的错误,所以我想这可能只是涉及到铬报告问题的方式。有没有人看到一个更优雅的解决方案来检查一个文件是否存在,而没有在控制台中进行任何操作。

+0

那么,你提出的要求,所以当然Chrome的要告诉你,它返回一个403 – Jeremy 2011-05-13 13:33:47

+0

我不认为这会产生一个错误。 你不能使用Ajax并调用该页面,获取内容并解释它吗? – Pwnna 2011-05-13 13:34:03

+1

使用引用无效URL的src属性将'script'标记插入DOM ...现在引发异常? – 2011-05-13 13:37:10

回答

3
jQuery.getScript(url, [ success(data, textStatus) ]) 

描述:加载从使用HTTP GET请求的服务器的JavaScript文件,然后执行它。

url 一个字符串,其中包含请求发送到的URL。

成功(数据,textStatus) 如果请求成功执行的回调函数。

赶上错误使用ajaxError事件:

http://api.jquery.com/ajaxError/

+0

这是否适用于跨域网址? – Jeremy 2011-05-13 13:43:39

+0

从问题:“我不能使用AJAX,因为我需要以跨域的方式使用它。”当然,这个要求可能会让整个游戏成为不可能......但仍然如此。 – 2011-05-13 13:44:21

+0

这似乎在所有浏览器中都能正常工作 - 也是跨域的,但它仍然会在Chrome控制台中生成“GET http://somedomain.com/somefile.js 403(Forbidden)” - 但也许这只是不可能的改变 – sunebrodersen 2011-05-13 13:56:25