Skip to content

Instantly share code, notes, and snippets.

@ogii
Created February 5, 2019 10:24
Show Gist options
  • Save ogii/e35ee36eb641de92afd8ac2b030dfe1d to your computer and use it in GitHub Desktop.
Save ogii/e35ee36eb641de92afd8ac2b030dfe1d to your computer and use it in GitHub Desktop.
Track time spent on page and fire VWO goals
setInterval(function(){
if(parseInt(timeSpentOnSite/1000) >= 5){
window._vis_opt_queue = window._vis_opt_queue || [];
window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(212);});
}
if(parseInt(timeSpentOnSite/1000) >= 10){
window._vis_opt_queue = window._vis_opt_queue || [];
window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(213);});
}
if(parseInt(timeSpentOnSite/1000) >= 20){
window._vis_opt_queue = window._vis_opt_queue || [];
window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(214);});
}
if(parseInt(timeSpentOnSite/1000) >= 30){
window._vis_opt_queue = window._vis_opt_queue || [];
window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(215);});
}
if(parseInt(timeSpentOnSite/1000) >= 60){
window._vis_opt_queue = window._vis_opt_queue || [];
window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(216);});
}
if(parseInt(timeSpentOnSite/1000) >= 180){
window._vis_opt_queue = window._vis_opt_queue || [];
window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(217);});
}
},1000);
var timer;
var timerStart;
var timeSpentOnSite = getTimeSpentOnSite();
function getTimeSpentOnSite(){
timeSpentOnSite = parseInt(localStorage.getItem('timeSpentOnSite'));
timeSpentOnSite = isNaN(timeSpentOnSite) ? 0 : timeSpentOnSite;
return timeSpentOnSite;
}
function startCounting(){
timerStart = Date.now();
timer = setInterval(function(){
timeSpentOnSite = getTimeSpentOnSite()+(Date.now()-timerStart);
localStorage.setItem('timeSpentOnSite',timeSpentOnSite);
timerStart = parseInt(Date.now());
// Convert to seconds
var timeCount = parseInt(timeSpentOnSite/1000);
//console.log(timeCount);
return timeCount;
},1000);
}
startCounting();
/* ---------- Stop the timer when the window/tab is inactive ---------- */
var stopCountingWhenWindowIsInactive = true;
if( stopCountingWhenWindowIsInactive ){
if( typeof document.hidden !== "undefined" ){
var hidden = "hidden",
visibilityChange = "visibilitychange",
visibilityState = "visibilityState";
}else if ( typeof document.msHidden !== "undefined" ){
var hidden = "msHidden",
visibilityChange = "msvisibilitychange",
visibilityState = "msVisibilityState";
}
var documentIsHidden = document[hidden];
document.addEventListener(visibilityChange, function() {
if(documentIsHidden != document[hidden]) {
if( document[hidden] ){
// Window is inactive
clearInterval(timer);
}else{
// Window is active
startCounting();
}
documentIsHidden = document[hidden];
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment