Firefox Javascript控制台和网络选项卡没有显示重要错误?

时间:2014-10-17 20:47:15

标签: javascript google-chrome debugging firefox console.log

在网页上随便调试一些javascript时,我注意到Firefox(33.0 - Windows 7)Javascript控制台不会告诉我是否有些.js文件无法加载,所以我决定仔细看看。

我发现如果我的HTML脚本标记指向错误的本地URL,则页面加载时控制台根本不会显示任何错误。相反,它会显示错误的.js脚本的完整路径和文件名,就像它没有任何问题一样。

我还尝试使用按钮元素向不存在的远程URL发出xmlhttprequest,同样的事情,单击时控制台中根本没有错误。

$("#button").click(function(){
    console.log("clicked me")
  $.getJSON("demo_ajax_json.js",function(result){
    $.each(result, function(i, field){
      $("div").append(field + " ");
    });
  });
}); 

while"点击我"将按预期显示。

此外,我确认已检查开发人员工具中的每个可能的日志设置。

在阅读完毕设置重置后有人幸运时,我使用了Menu>帮助>疑难解答>重置Firefox设置。但不是。错误仍然没有显现出来。

所以,故事的结尾,鉴于我刚刚决定调查这个问题,而且我无法完全记住我没有完全看到错误的时间,我在质疑自己是否是那种Firefox中的错误根本没有显示出来,如果它只是Chrome的特权......它本身就会显示所有错误(例如" net :: ERR_FILE_NOT_FOUND&# 34。)

有人在他们的控制台上进行快速测试吗?

更新,附上Firefox和Chrome的屏幕截图。

正如您所看到的情况完全不同。


代码:code

<小时/>

Firefox控制台标签:Firefox Console Tab

在丢失的文件上也没有错误,这些文件的名称只是在控制台中正常打印出来,就像它们没有任何问题一样。

<小时/>

Firefox网络标签:Firefox Network Tab




反对


Chrome控制台标签:Chrome Console Tab

<小时/>

Chrome网络标签:Chrome Network Tab:

1 个答案:

答案 0 :(得分:2)

在查看您添加的屏幕截图后,我注意到您是本地文件系统上的参考资源,因此我决定进行一些测试。我发现Firefox确实没有报告本地文件系统上的文件的网络错误,在控制台或网络选项卡上没有报告任何内容,但是它确实报告了它们的网络资源。遗憾的是,我无法准确地重现chrome中的错误,因为我的本地文件系统被严格锁定(我在企业自有系统上)并且chrome只是报告它没有访问本地文件系统的权限,无论该文件是否存在(Firefox没有说明)。同时,我想如果您将脚本/链接标记指向网络地址(如CDN),或者您在本地测试服务器上测试的内容如下:

http://localhost/[script-address]

它应该报告两个控制台中的错误。

这是我的测试代码: enter image description here

和firefox网络面板 enter image description here

Chrome控制台 enter image description here

在此点之下保留我的原始答案,因为JQuery API说明可能对其他发现自己的人有帮助


正如Ian的评论和http://api.jquery.com/jQuery.getJSON/中的JQuery API文档所述,如果您遇到语法错误,URL不存在或者它没有返回响应,那么JQuery的getJSON方法将无声地失败。您可以通过向末尾添加.fail()方法调用来强制它这样做:

$("#button").click(function(){
console.log("clicked me")
$.getJSON("demo_ajax_json.js",function(result){
$.each(result, function(i, field){
  $("div").append(field + " ");
    });
  }).fail(function() {
    console.log("AJAX request failed");
  });
});

您还可以使用此处记录的.ajaxError方法将函数绑定到错误事件:http://api.jquery.com/ajaxError/

$.ajaxError(function() {
    console.log("AJAX request failed.");
});

注意,当你这样做时,如果你创建变量来保存它们,JQuery会传递函数几个有用的参数,包括错误事件本身,触发它的ajax对象,使用的设置和错误然后,您可以使用该字符串向控制台输出所需的任何信息,以便调试导致错误的原因。祝你好运!