如何捕获所有 JavaScript 错误并将它们发送到服务器?
今天有大量的 Web API 可用。其中之一是GlobalEventHandlers ,一个在引发错误时调用的OnErrorEventHandler 。
GlobalEventHandlers的onerror属性是一个处理错误事件的EventHandler 。这对于捕获测试时从未发生的异常非常有用。不同的错误事件是:
- 当发生 JavaScript 运行时错误时,会调用window.onerror() 。
- 当资源加载失败时,将调用元素上的onerror()处理程序。这些错误事件可以通过将useCapture设置为 True 的window.addEventListener进行处理。
此浏览器事件onerror可以捕获所有 JavaScript 错误。这是记录客户端错误并将其报告给服务器的最简单方法之一。一个函数被分配给window.onerror ,如下所示:
句法:
window.onerror = function (msg, source, lineNo, columnNo, error) {
// function to execute error handling
}
以下参数传递给分配给window.onerror的函数:
- msg :与错误相关的消息。
- source :与错误相关的脚本或文档的 URL。
- lineNo:行号。
- columnNo:列号。
- error:与此错误相关的 Error 对象。
如果返回值为真,则只处理错误。
例子:
- 捕获错误:通过使用以下代码,我们可以捕获所有错误。
HTML
Catch all JavaScript errors
and send them to server
GeeksforGeeks
Catch all JavaScript errors
and send them to server
click here
Javascript
function captureError(err) {
var errorData = {
name: err.name,
message: err.line,
url: document.location.href,
stack: err.stack
};
$.post('/logger/js/', {
data: errorData
});
}
输出 :
- 在服务器上发送错误:在您插入window.onerror以捕获尽可能多的错误信息后,只有最后一步,即将错误信息传输到您的服务器。在下面的示例中,我们使用jQuery 的 AJAX函数将数据传输到服务器:
Javascript
function captureError(err) {
var errorData = {
name: err.name,
message: err.line,
url: document.location.href,
stack: err.stack
};
$.post('/logger/js/', {
data: errorData
});
}