检查url是否返回404

时间:2011-05-13 13:30:41

标签: javascript

我正在尝试检查在包含Javascript文件时URL是否返回404,403等。它工作正常,但我仍然在“Chrome开发者工具”中出错。

这是我的代码:

(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之前是否存在另一种测试URL的方法?我无法使用AJAX,因为我需要以跨域方式使用它。如有必要,我可以使用jQuery。

编辑:它没有在IE中显示错误,所以我想这可能只与chrome报告问题的方式有关。有没有人看到一个更优雅的解决方案,用于检查文件是否存在,而不会在控制台中输入任何内容。

1 个答案:

答案 0 :(得分:3)

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

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

     

URL       包含发送请求的URL的字符串。

     

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

要捕获错误,请使用ajaxError事件:

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