停止抑制JavaScript错误

时间:2010-12-12 20:42:51

标签: javascript jquery firebug

我正在使用Firebug来查看JavaScript错误。但我也在使用jQuery。出于某种原因,我在使用jQuery时从未看到JavaScript错误,这是首先使用jQuery的最大问题之一。

没有特定的代码可以显示,只需想象alert(areareg); areareg未定义或任何类型的JavaScript错误,Firebug不会告诉我它。 JavaScript将在没有任何警告或通知的情况下失败。在我使用jQuery的任何项目中总是如此,这是我不喜欢jQuery的唯一原因;因为出现问题时调试很难。

出于某种原因,我甚至无法在网上找到这个问题,更不用说回答了。但我想我会在这里尝试一下:

  1. 有没有办法让jQuery停止抑制错误消息?
  2. 我是世界上唯一一个一直遇到jQuery问题的人吗?
  3. 编辑: 我同时使用Firefox(使用Firebug)和Chrome,我只使用非缩小版的jQu​​ery。尽管如此,在使用jQuery时,我一生中从未见过任何类型的jQuery错误消息,既没有用也没用,实际上也没有正常的JavaScript错误。

3 个答案:

答案 0 :(得分:3)

好吧,尽管你的印象,jQuery本身并没有做任何“抑制”错误消息。现在,Firefox 确实倾向于抛弃某些类型的异常,特别是您所描述的异常。我经常发现,如果发生异常是一种有用的处理方式,那么在try ... catch中包含整个Javascript块并发出警报,但它仍然很烦人。

答案 1 :(得分:2)

我使用google Chrome进行调试,它非常好,它也显示了所有jquery错误(正如Alfred所说,如果你使用缩小版,你的错误中不会有任何有意义的名字,所以最好使用原始来源)

答案 2 :(得分:0)

我已多次遇到此问题。它非常不一致且难以复制,有时似乎与版本问题有关。设置似乎很少有所作为,但是"下一步打破"有时(并不总是)识别否则会漏掉的错误。

我注意到的一件事是,对于在回调函数内触发的代码,例如,来自UI事件或来自AJAX调用。有时Firefox / Firebug会像其他浏览器一样运行并在控制台中显示错误,有时即使是非常明确的案例,它也不会提供任何内容:

console.log('something'); // Shows up in console fine
fail  // Other browsers give undefined variable error, Firefox gives nothing
console.log('something else'); // Never reached, so silent error clearly happens

我发现的最佳方法是:

  • 一旦您发现了未显示错误,请使用console.trace()进行回复,直到您到达函数内部的位置,错误被隐藏,在外面,它显示,添加一些代码摘录如:

     console.trace();
     fail // cause the error, look out for a trace followed by nothing
    
  • 如果是AJAX调用,请手动添加基本错误处理程序,因为某些原因Firefox / Firebug正在丢失默认值:

     $.ajax({
       error: function(a,b,c){
         throw c;
       }, 
       other: '...settings'
     }
    
    • 如果您不能添加错误处理功能,请将其包装在try ... catch中,例如:
     try {
       // whatever the code is within which there are no errors
     } catch( err ){
       throw err;
     }
    

这应该足以捕获所有错误,因为它们在Firefox正在丢失的范围内。请注意你在回调中有回调的情况,你可能需要做两次......