我正在尝试检查在包含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报告问题的方式有关。有没有人看到一个更优雅的解决方案,用于检查文件是否存在,而不会在控制台中输入任何内容。答案 0 :(得分:3)
jQuery.getScript( url, [ success(data, textStatus) ] )
描述:使用GET HTTP请求从服务器加载JavaScript文件,然后执行它。
URL 包含发送请求的URL的字符串。
成功(data,textStatus) 如果请求成功则执行的回调函数。
要捕获错误,请使用ajaxError事件: