javascript - 从 Chrome 中的 window.addEventListener('error') 获取回溯?
问题描述
我正在尝试在没有内置 JavaScript 控制台(例如移动设备)的设备上记录错误。在此过程中,我试图使用window.addEventListener('error', (event)=>{...})
.
在 Firefox 中,该条目event.error
可以访问有关错误的完整信息。然而,在 Chrome 中,event.error
总是null
. 同样,作为参数之一传递的等效错误对象window.onerror
存在于 Firefox 中,但在 Chrome 中缺失。
这是预期的行为吗?是否有一些可靠的跨浏览器访问回溯信息的方法?
例子
在控制台中执行,例如在此站点上。
window.addEventListener('error', (err) => {
for(const key in err) {
console.log(key,'=',err[key]);
}
});
// Chrome doesn't capture errors produced directly in the console,
// so we use a timeout.
window.setTimeout(()=>{ noSuchVariable; }, 100)
我得到:
VM5685:3 isTrusted = true
VM5685:3 message = Script error.
VM5685:3 filename =
VM5685:3 lineno = 0
VM5685:3 colno = 0
VM5685:3 error = null
...
我在私有模式下获得了相同的结果,即它与扩展无关。
Firefox 给出了更有用的结果:
sTrusted = true debugger eval code:3:17
message = ReferenceError: noSuchVariable is not defined debugger eval code:3:17
filename = debugger eval code debugger eval code:3:17
lineno = 8 debugger eval code:3:17
colno = 25 debugger eval code:3:17
error = ReferenceError: "noSuchVariable is not defined"
<anonymous> debugger eval code:8
解决方案
正如CertainPerformance所指出的,该问题是由使用Chrome 开发者控制台引起的,这会干扰错误处理。
javascript:
但是,如果错误是在计时器内或通过键入URL执行的脚本内引发的,则错误数据是正确给出的。
推荐阅读
- r - 如何在 R 中运行 readline 函数?
- python - 不能每个
每个评论的标签
- c++ - 在 Embarcadero C++Builder 中将数据从 TFDQuery 转换为字符串
- c++ - 我发现 std::endl 意味着将光标移动到新行,然后刷新 cin 缓冲区。但在这段代码中,使用 endl 后,getline 不起作用
- report - 如何对不同的表和不同的标准数据使用选择查询?
- xaml - 为什么我的网格有一些内部间距?
- python - 如何在 Click 中将选项名称添加到版本选项
- c# - 在为 API 请求形成 c# 对象时需要更好的设计
- python-3.x - 如何在 django 中上传保存的文件
- reactjs - 如何使用socket io在一个房间内向所有人广播一个用户