2016-06-28 4 views
0

Ich habe den folgenden Code in meiner Masterseite für Google Analytics.Aufruf von Google Analytics in Scroll-Ereignis in jquery

Ich muss Google Analytics in js für Scroll-Ereignis anrufen, wie Google Analytics-Funktion für Scroll-Ereignis aufrufen? Kannst du mir bitte helfen, das zu lösen? ?

+0

De-facto-Standard für die Scroll-Tiefe-Tracking für jQuery Benutzer scheint http://scrolldepth.parsnip.io/ zu sein. Oder von Google Justin Cutroni: http://cutroni.com/blog/2014/02/12/advanced-content-tracking-with-universal-analytics/. Ich bin mir sicher, dass es noch viel mehr gibt, das sind nur die ersten beiden Treffer einer Google-Suche. –

Antwort

0

Ein Typ, der hier in meiner Firma arbeitete, entwickelte eine Bibliothek für Google Analytics Classic, ich nahm das Track Scroll Plugin und passte es an Universal Google Analytics an, hier ist der Code: (wenn Sie irgendwelche Zweifel haben, nur mich fragen)

/** 
 
* GAS - Google Analytics on Steroids 
 
* 
 
* Max-Scroll Tracking Plugin 
 
* 
 
* Copyright 2011, Cardinal Path and Direct Performance 
 
* Licensed under the GPLv3 license. 
 
* 
 
* @author Eduardo Cereto <[email protected]> 
 
*/ 
 

 
var _maxScrollOpts; 
 

 
/** 
 
* Get current browser viewpane heigtht 
 
* 
 
* @return {number} height. 
 
*/ 
 
function _get_window_height() { 
 
    return window.innerHeight || documentElement.clientHeight || 
 
     document.body.clientHeight || 0; 
 
} 
 

 
/** 
 
* Get current absolute window scroll position 
 
* 
 
* @return {number} YScroll. 
 
*/ 
 
function _get_window_Yscroll() { 
 
    return window.pageYOffset || document.body.scrollTop || 
 
     documentElement.scrollTop || 0; 
 
} 
 

 
/** 
 
* Get current absolute document height 
 
* 
 
* @return {number} Current document height. 
 
*/ 
 
function _get_doc_height() { 
 
    return Math.max(
 
     document.body.scrollHeight || 0, documentElement.scrollHeight || 0, 
 
     document.body.offsetHeight || 0, documentElement.offsetHeight || 0, 
 
     document.body.clientHeight || 0, documentElement.clientHeight || 0 
 
    ); 
 
} 
 

 

 
/** 
 
* Get current vertical scroll percentage 
 
* 
 
* @return {number} Current vertical scroll percentage. 
 
*/ 
 
function _get_scroll_percentage() { 
 
    return (
 
     (_get_window_Yscroll() + _get_window_height())/_get_doc_height() 
 
    ) * 100; 
 
} 
 

 
var _t = null; 
 
var _max_scroll = 0; 
 
function _update_scroll_percentage(now) { 
 
    if (_t) { 
 
     clearTimeout(_t); 
 
    } 
 
    if (now === true) { 
 
     _max_scroll = Math.max(_get_scroll_percentage(), _max_scroll); 
 
     return; 
 
    } 
 
    _t = setTimeout(function() { 
 
     _max_scroll = Math.max(_get_scroll_percentage(), _max_scroll); 
 
    }, 400); 
 
} 
 

 
function _sendMaxScroll() { 
 
    _update_scroll_percentage(true); 
 
    _max_scroll = Math.floor(_max_scroll); 
 
    if (_max_scroll <= 0 || _max_scroll > 100) return; 
 
    var bucket = (_max_scroll > 10 ? 1 : 0) * (
 
     Math.floor((_max_scroll - 1)/10) * 10 + 1 
 
    ); 
 
    bucket = String(bucket) + '-' + 
 
     String(Math.ceil(_max_scroll/10) * 10); 
 

 
    ga('send', 
 
     'event', 
 
     _maxScrollOpts['category'], 
 
     url, 
 
     bucket, 
 
     Math.floor(_max_scroll), 
 
     true // non-interactive 
 
    ); 
 
} 
 

 
/** 
 
* Tracks the max Scroll on the page. 
 
* 
 
* @param {object} opts GAS Options to be used. 
 
* @this {GasHelper} The Ga Helper object 
 
*/ 
 
function _trackMaxScroll(opts) { 
 
    if (!this._maxScrollTracked) { 
 
     this._maxScrollTracked = true; 
 
    } else { 
 
     //Oops double tracking detected. 
 
     return; 
 
    } 
 
    _maxScrollOpts = opts || {}; 
 
    _maxScrollOpts['category'] = _maxScrollOpts['category'] || 'Max Scroll'; 
 

 
    this._addEventListener(window, 'scroll', _update_scroll_percentage); 
 
    this._addEventListener(window, 'beforeunload', _sendMaxScroll); 
 
} 
 

 
_trackMaxScroll();