篇首语:本文由小编为大家整理,主要介绍了日志显示错误对象:{“isTrusted”:true}而不是实际的错误数据相关的知识,希望对你有一定的参考价值。
我有一个如下所示的事件处理程序:
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
如您所见,没有有用的行号或错误消息。我需要更改以获取行号和错误详细信息?
答案
在这种情况下,您需要注意两点。两点都是相互独立的,应该修复以解决您的问题。
第一
您遇到的错误是一种特殊类型的错误,称为Script Error
“脚本错误”是当错误源自从不同来源(不同域,端口或协议)提供的javascript文件时,浏览器发送到
onerror
回调的内容。这很痛苦,因为即使出现错误,您也不知道错误是什么,也不知道它来自哪个代码。
这不是JavaScript错误
出于安全原因,浏览器故意隐藏源自不同来源的脚本文件的错误。这是为了避免脚本无意中将潜在敏感信息泄露给它无法控制的onerror回调。因此,浏览器只会让
window.onerror
深入了解源自同一域的错误。我们所知道的是发生了一个错误 - 没有别的!
要解决此问题:
要修复并获取正常的错误对象,请检查此blog post
第二
当您尝试对任何Error
对象进行字符串化时,结果将不会令人满意,因为您将丢失几乎所有数据。
原因就在于此
JSON.stringify
仅处理可枚举属性,但Error
对象将上下文数据存储在不可数属性中。
解决这个问题
有许多解决方案,但这可能是直截了当的
JSON.stringify(err, ["message", "arguments", "type", "name"])
这将选择您想要的属性并为您生成字符串。
另一答案
“脚本错误”可能意味着问题在于尝试从外部域执行脚本。
您没有关于行号和错误详细信息的信息,因为它不在您的页面上。
它在this question的答案中得到了广泛的报道。
以上是关于日志显示错误对象:{“isTrusted”:true}而不是实际的错误数据的主要内容,如果未能解决你的问题,请参考以下文章