Shoora
4/8/2019 - 10:42 PM

Time On Visible and Hidden Page

Time On Visible and Hidden Page


  var prefix=function() {
  var prefixes = ['moz', 'ms', 'o', 'webkit'];
  
    if ('hidden' in document) {
    return '';
  }
  
   // Loop through each prefix to see if it is supported. 
  for (var i = 0; i < prefixes.length; i++) {
    var testPrefix = prefixes[i] + 'Hidden';
    if (testPrefix in document) {
      return prefixes[i];
    }
  }

  return;
}

   var visibilityState = function(pref){
    switch (pref) {
    case '':
      return document['hidden'];
    case 'moz':
      return document['mozHidden'];
    case 'o':
      return document['oHidden'];
    case 'webkit':
      return document['webkitHidden'];
    default:
      return;
  }
}
  // Initialize time 
  var startTime = new Date().getTime();
  var totalTime = {};
  if (typeof prefix() !== 'undefined') {
    var prevTime = 0;
    var visibilityEvent = prefix() + 'visibilitychange';
       
  function visibilityChanged() 
  {
  var isHidden=visibilityState(prefix())
  if (typeof isHidden !== 'undefined') {
  prevTime = 0 ? new Date().getTime() - startTime : new Date().getTime() - startTime - prevTime;  
  
    //Total Time for previous visibility state 
    if(isHidden) { totalTime.visibleTime=prevTime} 
     else {totalTime.hiddenTime=prevTime} 
    }  
         //////Debugging Datalayer Event ///////// 
              dataLayer.push({
              'event' : 'visibilityChange',
              'visibletime' : totalTime.visibleTime,
              'hiddentime': totalTime.hiddenTime,
              'hidden' : isHidden           
            });
         /////////////// 
};
function sendTimings()  
  {
    var isHidden=visibilityState(prefix())
  if (typeof isHidden !== 'undefined') {
  prevTime = 0 ? new Date().getTime() - startTime : new Date().getTime() - startTime - prevTime;  
  if(!isHidden) 
   {totalTime.visibleTime=prevTime} 
     else {totalTime.hiddenTime=prevTime} 
    }  
  
   dataLayer.push({
              'event' : 'sendTimings',
              'visibleTime' : totalTime.visibleTime,
              'hiddenTime': totalTime.hiddenTime,
              'hidden' : isHidden        
            }); 
  
  // reset the variables after sending data to analytics  
  prevTime=0;
  startTime = new Date().getTime();
  totalTime = {}  
  }
    //Initialize the listeners
    document.addEventListener(visibilityEvent, visibilityChanged, false);
    window.addEventListener('beforeunload', sendTimings, false);
  
  }