我有一个如下所示的事件处理程序:
window.addEventListener('error', function (e) {
SendLogErrorToServer('Error: ' + e.message +
'Error object: ' + JSON.stringify(e) +
'Script: ' + e.filename +
'Line: ' + e.lineno +
'Col: ' + e.colno +
'Nav: ' + window.navigator.userAgent));
}, false);
问题是我收到的内容如下:
Error: Script error.Error object: {"isTrusted":true} Script: Line: 0 Col: 0 Nav: Mozilla/5.0
如您所见,没有可用的行号或错误消息。我需要更改什么才能获得行号和错误详细信息?
答案 0 :(得分:23)
在这种情况下,您需要注意两点。两个点都是相互独立的,应该修复以解决您的问题。
您遇到的错误是一种特殊类型的错误,称为Script Error
“脚本错误”是浏览器发送到
window.onerror
回调的时候 错误源自从不同来源提供的JavaScript文件 (不同的域,端口或协议)。甚至是痛苦的 虽然发生了错误,但您不知道错误是什么, 也不是它起源于哪个代码。
这不是JavaScript错误
浏览器故意隐藏错误 源自不同来源的脚本文件以确保安全性 原因。这是为了避免脚本无意中泄漏 敏感信息到它无法控制的onerror回调。 出于这个原因,浏览器只能
Error
洞察错误 来自同一个域。我们所知道的只是一个错误 发生了 - 没有别的!
解决此问题:
要修复并获取正常的错误对象,选中此blog post
当您尝试对任何JSON.stringify
对象进行字符串化时,结果将不会令人满意,因为您将丢失几乎所有数据。
原因
Error
仅处理可枚举属性,但JSON.stringify(err, ["message", "arguments", "type", "name"])
对象将上下文数据存储在不可数属性中。
解决此问题
有许多解决方案,但这个可能是直截了当的
-rwxr----- 1 sammy sammy 566719 Jul 1 14:52 developer.jpg
这会选择你想要的属性并为你生成字符串。
答案 1 :(得分:1)