Javascript:事件侦听器上未显示错误
我有一个让我发疯的问题。我有两个似乎相同的事件侦听器。正在使用相同的作用域但在不同的时间调用。我一直在使用chromes调试器工具逐步通过它们。第一个将抛出一个错误Javascript:事件侦听器上未显示错误,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个让我发疯的问题。我有两个似乎相同的事件侦听器。正在使用相同的作用域但在不同的时间调用。我一直在使用chromes调试器工具逐步通过它们。第一个将抛出一个错误 TypeError:对象1没有方法“get” 但第二个示例simple停止执行 el.on("change:one", function() { debugger; a = 1; a.get(); }); el.on("change:two", function() { debugger; a = 1; a
TypeError:对象1没有方法“get”
但第二个示例simple停止执行
el.on("change:one", function() {
debugger;
a = 1;
a.get();
});
el.on("change:two", function() {
debugger;
a = 1;
a.get();
});
我理解,简单地询问为什么会发生这种情况可能需要详细解释所有正在使用的库等,因此我的问题是:
是否可以不显示javascript抛出的错误,以及如何检测是否有什么内容覆盖了错误报告功能
注意:在这两个示例中,我都确定
window.onerror
为null
主干同步调用事件处理程序,不捕获处理程序异常。因此,如果您有如下代码:
el.trigger('change:one'); // handler will throw exception
el.trigger('change:two'); // won't execute
change:two
事件将永远不会被触发,导致您的change:two
处理程序永远不会被调用。若要在工作中使用扳手,我可以在chromes控制台中调用el.trigger('change:two'),它将显示错误……您确定正在执行第二个事件处理程序吗?根据事件的触发方式,第一个错误可能是停止执行触发change:two
的任何功能。您可以手动触发事件并成功抛出错误,这一事实支持这一点。1是数字对象。。而且它没有get
方法。。尝试为el.trigger('change:one')触发相同的事件。
。。从@Sushanth--开始应该是相同的,尽管我很确定你已经知道这一点。@MattStone是肯定的,浏览器在两个函数中都处于调试器模式。谢谢你的回答,我可以删除进行更改的代码:一个工作,更改:两个执行,死亡但不显示错误当我从change:one
处理程序中删除导致异常的代码时,我能够从change:two
处理程序中看到错误。看这个。