我正在使用Firebug来查看JavaScript错误。但我也在使用jQuery。出于某种原因,我在使用jQuery时从未看到JavaScript错误,这是首先使用jQuery的最大问题之一。
没有特定的代码可以显示,只需想象alert(areareg);
areareg
未定义或任何类型的JavaScript错误,Firebug不会告诉我它。 JavaScript将在没有任何警告或通知的情况下失败。在我使用jQuery的任何项目中总是如此,这是我不喜欢jQuery的唯一原因;因为出现问题时调试很难。
出于某种原因,我甚至无法在网上找到这个问题,更不用说回答了。但我想我会在这里尝试一下:
编辑: 我同时使用Firefox(使用Firebug)和Chrome,我只使用非缩小版的jQuery。尽管如此,在使用jQuery时,我一生中从未见过任何类型的jQuery错误消息,既没有用也没用,实际上也没有正常的JavaScript错误。
答案 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 { // whatever the code is within which there are no errors } catch( err ){ throw err; }
这应该足以捕获所有错误,因为它们在Firefox正在丢失的范围内。请注意你在回调中有回调的情况,你可能需要做两次......