一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用Google Analytics跟蹤捕獲JavaScript,AngularJS,jQuery的在線錯誤和異常

 codingparty 2015-03-04

谷歌Analytics(分析)是最流行的網(wǎng)站統(tǒng)計服務(wù)。它有多種用途:跟蹤訪問者的會話活動和事件。

(注* 盡管谷歌在中國無法訪問,但它的分析服務(wù)中可用的,訪問分析管理界面需要借助代理。)

它能夠跟蹤任何事件。因此我們可以通過谷歌Analytics(分析)發(fā)送和跟蹤任何數(shù)據(jù)。其中最重要的一個應(yīng)用場景就是,為Web開發(fā)人員分析網(wǎng)頁上可能產(chǎn)生或未發(fā)現(xiàn)的錯誤和異常。

到目前為止,谷歌提出了2種方式跟蹤事件方式:

  •  經(jīng)典的ga.js與 以 _gaq.push(...) 接口發(fā)送
  •  新的通用分析analytics.js,通過 ga('send',...) 語法發(fā)送。

我們來看一看JavaScript,AngularJS和jQuery的異常跟蹤。

經(jīng)典的ga.js

當(dāng)你正在使用谷歌分析時,它會以下面的方式進行工作:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_gaq.push(['_trackPageview']);
(function () {
    var ga = document.createElement('script');
    ga.type = 'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
})();

JavaScript錯誤error

下面的代碼將會把所有JS拋出的錯誤(錯誤信息和發(fā)生錯誤的時間)信息發(fā)送給GA; navigator.userAgent 提供用戶瀏覽器的信息,將有助于簡化分析異常發(fā)生的原因。

//純JavaScript錯誤處理程序
window.addEventListener('error', function (err) {
    var lineAndColumnInfo = err.colno ? ' line:' + err.lineno +', column:'+ err.colno : ' line:' + err.lineno;
    _gaq.push([
        '_trackEvent',
        'JavaScript Error',
        err.message,
        err.filename + lineAndColumnInfo + ' -> ' +  navigator.userAgent,
        0,
        true
    ]);
});

AngularJS異常處理程序

AngularJS通過exceptionHandler捕捉所有未捕獲的異常。

// AngularJS錯誤處理程序
angular.module('loggerApp')
        .config(function ($provide) {
            $provide.decorator("$exceptionHandler", function ($delegate) {
                return function (exception, cause) {
                    $delegate(exception, cause);
                    _gaq.push([
                        '_trackEvent',
                        'AngularJS error',
                        exception.message,
                        exception.stack,
                        0,
                        true
                    ]);
                };
            });
        });

jQuery異常

jQuery提供.error()方法,它將幫助開發(fā)者捕獲異常。

// jQuery的錯誤處理程序(jQuery的API)
jQuery.error = function (message) {
    _gaq.push([
        '_trackEvent',
        'jQuery Error',
        message,
        navigator.userAgent,
        0,
        true
    ]);
}

jQuery的AJAX錯誤處理程序

每當(dāng)用一個Ajax請求發(fā)生錯誤時,jQuery就會觸發(fā)ajaxError事件。

// jQuery的AJAX錯誤處理程序(jQuery的API)
$(document).ajaxError(function (event, request, settings) {
    _gaq.push([
        '_trackEvent',
        'jQuery Ajax Error',
        settings.url,
        JSON.stringify({
            result: event.result,
            status: request.status,
            statusText: request.statusText,
            crossDomain: settings.crossDomain,
            dataType: settings.dataType
        }),
        0,
        true
    ]);
});

新版analytics.js

如果您使用的是新牌的API,它可能像下面這樣:

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

ga('create', 'UA-XXXXXXXX-X', 'auto');
ga('send', 'pageview');

下面是在新版analytics.js代碼上,追蹤錯誤異常。

JavaScript錯誤

window.addEventListener('error', function (err) {
    var lineAndColumnInfo = err.colno ? ' line:' + err.lineno +', column:'+ err.colno : ' line:' + err.lineno;
    ga(
        'send',
        'event',
        'JavaScript Error',
        err.message,
        err.filename + lineAndColumnInfo + ' -> ' +  navigator.userAgent,
        0,
        true
    );
});

AngularJS異常處理程序

// AngularJS錯誤處理程序
angular.module('loggerApp')
        .config(function ($provide) {
            $provide.decorator("$exceptionHandler", function ($delegate) {
                return function (exception, cause) {
                    $delegate(exception, cause);
                    ga(
                        'send',
                        'event',
                        'AngularJS error',
                        exception.message,
                        exception.stack,
                        0,
                        true
                    );
                };
            });
        });

jQuery的錯誤

// jQuery的錯誤處理程序(jQuery的API)
jQuery.error = function (message) {
    ga(
        'send',
        'event',
        'jQuery Error',
        message,
        navigator.userAgent,
        0,
        true
    );
}

jQuery的AJAX錯誤處理程序

// jQuery的AJAX錯誤處理程序(jQuery的API)
$(document).ajaxError(function (event, request, settings) {
    ga(
        'send',
        'event',
        'jQuery Ajax Error',
        settings.url,
        JSON.stringify({
            result: event.result,
            status: request.status,
            statusText: request.statusText,
            crossDomain: settings.crossDomain,
            dataType: settings.dataType
        }),
        0,
        true
    );
});

完整的示例如下:

經(jīng)典版 http:///malyw/pen/myLPeJ

最新版 http:///malyw/pen/MYGwzz

在GA中檢驗數(shù)據(jù)

在GA中你可以找到兩種主要的事件報告

實時在線事件

普通事件報告

原文地址:點此

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99少妇偷拍视频在线| 欧美日韩黑人免费观看| 这里只有九九热精品视频| 亚洲中文字幕熟女丝袜久久| 日韩免费国产91在线| 亚洲熟妇中文字幕五十路| 午夜色午夜视频之日本| 久久久精品区二区三区| 国产日韩欧美在线播放| 国产欧美韩日一区二区三区| 国产一区二区不卡在线播放| 国产一区二区久久综合| 在线观看视频国产你懂的| 国产精品99一区二区三区| 精品欧美国产一二三区| 99精品国产一区二区青青| 大香蕉网国产在线观看av| 深夜少妇一区二区三区| 91精品国产综合久久精品 | 国产亚洲精品香蕉视频播放| 高清一区二区三区四区五区| 一区二区三区日本高清| 亚洲熟妇av一区二区三区色堂| 九九视频通过这里有精品| 白丝美女被插入视频在线观看| 绝望的校花花间淫事2| 不卡一区二区在线视频| 欧美大粗爽一区二区三区| 中文字幕人妻综合一区二区| 精品国产日韩一区三区| 亚洲欧美日本成人在线| 国产亚洲欧美日韩精品一区| 99免费人成看国产片| 精品一区二区三区中文字幕| 色综合伊人天天综合网中文| 国产大屁股喷水在线观看视频| 欧美日韩一级黄片免费观看| 日本特黄特色大片免费观看| 青青草草免费在线视频| 久草视频这里只是精品| 精品欧美一区二区三久久|