在 google 分析中捕获 javascript 错误

Catch javascript errors inside google analytics

我希望在“ga(function(tracker)”函数内部发生错误时调用 window.onerror 处理程序。显然 ga 函数有它自己的错误处理程序,可以防止 window.onerror要调用的处理程序。

(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','ga');

window.onerror = function() {console.log('Hello world') };
    
ga('create', '********', '********');
ga(function(tracker) {
console.log('Start');
/* 
Variable y is undefined 
window.onerror should be invoked
*/
var x = y;
console.log('End');
});
ga('send', 'pageview');

澄清一下。我的问题不是如何使用 google 分析来跟踪错误,而是如何在 google 分析脚本中捕获错误。

使用自定义 try..catchdispatchEvent 会有所帮助:

    
ga('create', '********', '********');

// declaring readyCallback function
var initFunction = function(tracker) {
console.log('Start');
/* 
Variable y is undefined 
window.onerror should be invoked
*/
var x = y;
console.log('End');
}

// Wrapping your readyCallback with custom try...catch:
var initFunctionWrapped = function (tracker) {
  try {
    initFunction(tracker)
  } catch (e) {
    var event = new Event('error', e);
    window.dispatchEvent(event)
}

ga(initFunctionWrapped);
ga('send', 'pageview');