我正在尝试获取有关我的网络应用程序中发生的JavaScript错误的信息,并使用Google Analytics中的事件记录这些错误。我这样做如下:
$(document).ready(function() {
var sendAnalyticsEvent = function(category, action, label) {
if (window.ga) {
window.ga('send', 'event', category, action, label);
}
};
window.onerror = function(error) {
try {
sendAnalyticsEvent('JavaScript Error', error.message, error.filename + ': ' + error.lineno);
} catch(e) {
}
};
$(document).ajaxError(function(e, request, settings) {
try {
sendAnalyticsEvent('Ajax Error', settings.url, e.result);
} catch(e) {
}
});
});
这是成功将事件触发到Google Analytics,例如:
但是,当我点击“JavaScript Error”时,它不会向我提供任何其他信息,例如应该使用上述代码发送的错误消息。
为什么这不会发送错误消息以及错误?
修改
事实证明我正在声明window.onerror函数错误。以下工作正常:
window.onerror = function (message, source, lineno, colno, error) {
try {
sendAnalyticsEvent('js error', message, source + ': ' + lineno);
} catch(e) {
}
};
答案 0 :(得分:2)
您将错误消息作为事件标签维度发送,但该报告正在查看“事件类别”维度。如果单击“事件标签”,则应该看到它。
话虽如此,为什么不使用exception tracking代替事件跟踪来衡量呢?完全针对此用例构建了异常跟踪。
答案 1 :(得分:1)
在你的情况下,问题是在window.onerror()
内声明$(document).ready()
,它只会在jQuery初始化后捕获错误。你需要尽早申报。
将以下内容添加到<head>
:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','_watchdog');
_watchdog('create', 'UA-xxxxxxx-x', 'auto');
window.onerror = function(msg) {
_watchdog('send', 'exception', { 'exDescription': msg });
_watchdog('send', 'event', {
eventCategory: 'javascript',
eventAction: 'error',
eventLabel: msg,
transport: 'beacon'
});
}
</script>
之后,您将开始在“Javascript”类别下接收“错误”类型的活动。
不幸的是,在Event Tracking中,您的错误消息将为limited by 500 Bytes,因此您将无法正确理解问题,但是您会知道出现了问题:)
对于mo详细错误,请使用Exception Tracking