如何捕获所有JavaScript错误并发送到服务器
如今有大量的Web API可用。其中之一是 GlobalEventHandlers ,一个用于在引发错误时调用的 OnErrorEventHandler 。
GlobalEventHandlers 的 onerror 属性是一个处理错误事件的 EventHandler 。这对于捕获在测试过程中从未发生的异常非常有用。不同的错误事件有:
- 当发生JavaScript运行时错误时,会调用 window.onerror() 。
- 当资源加载失败时,会调用元素上的 onerror() 处理程序。这些错误事件可以通过设置useCapture为True的 window.addEventListener 来处理。
可以通过此浏览器事件 onerror 捕获所有JavaScript错误。这是记录客户端错误并向服务器报告它们的最简单方法之一。可以通过将函数分配给 window.onerror 来实现:
Syntax:
window.onerror = function (msg, source, lineNo, columnNo, error) {
// 执行错误处理的函数
}
将分配给 window.onerror 的函数传递以下参数:
- msg: 与错误相关的消息。
- source: 与错误相关的脚本或文档的URL。
- lineNo: 行号。
- columnNo: 列号。
- error: 与此错误相关的Error对象。
如果返回值为true,只有错误会被处理。
示例:
捕获错误: 使用下面的代码可以捕获所有的错误。
<!DOCTYPE html>
<html>
<head>
<title>
捕获所有JavaScript错误并将其发送到服务器
</title>
</head>
<body>
<center>
<h1 style="color: green;">
GeeksforGeeks
</h1>
<b>
捕获所有JavaScript错误并将其发送到服务器
</b>
<a href="javascript:myalert()">click here</a>
<script>
window.onerror =
function (msg, source, lineNo, columnNo, error) {
alert("错误:" + msg +
"\n脚本:" + source +
"\n行:" + lineNo +
"\n列:" + columnNo +
"\n堆栈跟踪:" + error);
return true;
};
var myalert = function () {
alert(gfg);
};
</script>
</center>
</body>
</html>
输出:
发送错误到服务器: 在为了尽可能捕获尽可能多的错误信息而接入 window.onerror 之后,只需进行一最后一步:将错误信息传输到服务器。在下面的示例中,我们使用jQuery的AJAX函数将数据传输到服务器:
function captureError(err) {
var errorData = {
name: err.name,
message: err.line,
url: document.location.href,
stack: err.stack
};
$.post('/logger/js/', {
data: errorData
});
}
阅读更多:JavaScript 教程