窗口.Onerror函数在不同浏览器上的处理方式不同
window.onerror function handled differently on different browsers
我试图实现一个简单的js日志记录。在测试了下面的代码后,我发现它的行为是不同的浏览器。
将return改为true、false或删除return都有不同的效果。有人知道怎么避免这种情况吗?我希望能够捕获错误并记录它们,但我也希望维护浏览器的错误处理。
window.onerror = function () {
alert('error caught!');
// Basically here I fire a Google Analytics force event track call to log the error
return false;
}
或者,如果有人知道更好的方法来记录客户端js错误…
Chrome - return false -在控制台显示错误Safari -返回false -在控制台
中不显示错误**转换为返回true会得到完全相反的结果。不确定IE等
如果你想在IE中错误的行号,我很确定你唯一的选择是window.onerror
,因为当IE在try...catch
块中抛出异常时,它不包含行号。也就是说,每个浏览器在try...catch
块中抛出的异常都有不同的实现-有些提供了在任何浏览器中都无法从window.onerror
获得的完整堆栈跟踪。我不知道你发现的特殊怪癖,但我知道异常处理是所有浏览器中最不一致的实现,它甚至在每个浏览器中都不一样;如果我没记错的话,Opera在Opera 10中改变了他们的异常类,破坏了我在Opera中为解析异常而编写的一些东西。
我只想说,你已经发现了JavaScript中异常处理的地狱,唯一的方法就是浏览器检测和分支,为每个浏览器做正确的事情。我一直在寻找一个好的库来处理JavaScript中的异常和抽象浏览器的差异,但到目前为止,我还没有找到一个。
相关文章:
- java脚本点击事件处理程序不工作
- jQuery的工作方式不一样
- Rails4-启动多个点击事件处理程序不起作用
- touchstart处理程序之后的touchmove处理程序不起作用
- express 4.0主体解析器对路由处理程序不可见
- React组件onClick处理程序不工作
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- PHP在处理后不会自动重新加载
- 将原型函数绑定到此的方式不那么冗长
- 油脂猴按钮点击处理程序不起作用
- 插入内容后,Iframe 中的单击处理程序不起作用
- 内联点击处理程序不起作用
- 委托的事件处理程序不起作用
- 切换事件处理程序不运行
- JQuery 使用 var 对边距顶部进行动画处理,不起作用
- 为什么当同级节点的“display”属性发生更改时,React 组件的 onClick 事件处理程序不会触发
- jQuery 脚本在以编程方式(不是由用户)更改选择选项时不起作用
- 以两种不同的方式编写函数:一种方式会导致 TypeError,另一种方式不会.为什么
- 处理草图不会使用 Java 在线运行
- 主干.js事件处理程序不起作用