【发布时间】:2015-11-23 03:44:52
【问题描述】:
我添加了一种将浏览器上发生的事件记录到服务器端日志的方法:
这会向我的服务器发送一条消息(就像我在正常操作期间使用 console.log 记录关键事件一样使用)
function remoteConsoleLog(msgToLog, msgDesc) {
$.ajax({
type: 'POST',
url: '/php/log_javascript_events.php',
data: JSON.stringify({UA: navigator.userAgent, MSG: msgToLog, MSGDESC: msgDesc}),
contentType: 'application/json; charset=utf-8'
});
}
这是一个用于捕获其他错误的包装器(基于this):
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
remoteConsoleLog(errorMsg, 'window onerror');
}
这很好用,我在服务器日志文件中得到了我期望的所有事件。但是,问题是我从 window.onerror 处理程序中遇到了一些我不期望的错误,例如通用“Script error”(我已经看到这可能是一个 CORS 问题)和其他非常具体的错误,例如
Uncaught ReferenceError: DealPly is not defined
(这似乎与与我的网站无关的浏览器插件有关)。
我的网站使用了一些外部的JS文件,比如JQuery之类的。有没有办法只记录包含我的日志记录的 javascript 文件生成的错误,即排除第三方错误 - 或者这甚至是一件好事吗?
【问题讨论】:
-
根据下面的回复,我刚刚修改了包装器-remoteConsoleLog(errorMsg, 'window onerror' + url); - 记录脚本名称并将过滤服务器端
-
您找出导致
DealPly is not defined错误的原因了吗?出于某种原因,我们开始经常看到它。
标签: javascript jquery error-handling