Advertisement
GiacomoGalanti

Tag Engagement

Jan 26th, 2021
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. <script>
  2. (function() {
  3. var startEngage = new Date().getTime();
  4. var timeEngaged = 0;
  5. var idleTime = 0;
  6. var idle = true;
  7. var idleReport = false;
  8. var idleTimer, reportTimer;
  9.  
  10. /* Set the user as idle, and calculate the time
  11. they were non-idle */
  12. var setIdle = function() {
  13. idleTime = new Date().getTime();
  14. timeEngaged += idleTime - startEngage;
  15. idle = true;
  16. };
  17.  
  18. /* Reset the 5 second idle timer.
  19. If the user was idle, start the non-idle timer */
  20. var pulse = function(evt) {
  21. if (idle) {
  22. idle = false;
  23. startEngage = new Date().getTime();
  24. idleReport = false;
  25. }
  26. window.clearTimeout(idleTimer);
  27. idleTimer = window.setTimeout(setIdle, 5000);
  28. };
  29.  
  30. // Utility function for attaching listeners to the window
  31. var addListener = function(evt, cb) {
  32. if (window.addEventListener) {
  33. window.addEventListener(evt, cb);
  34. } else if (window.attachEvent) {
  35. window.attachEvent('on' + evt, cb);
  36. }
  37. };
  38.  
  39. /* Push an event to dataLayer every 15 seconds
  40. unless the user is idle.
  41. Also, push an event when the user leaves the page */
  42. var report = function(evt) {
  43. if (!idle) {
  44. timeEngaged += new Date().getTime() - startEngage;
  45. }
  46.  
  47. // Push the payload to dataLayer, and only push valid time values
  48. if (!idleReport && timeEngaged > 0 && timeEngaged < 3600000) {
  49. window.dataLayer.push({
  50. 'event' : 'nonIdle',
  51. 'nonIdleTimeElapsed' : timeEngaged
  52. });
  53. }
  54. if (idle) {
  55. idleReport = true;
  56. }
  57.  
  58. // Fix possible beforeunload duplication problem
  59. if (evt && evt.type === 'beforeunload') {
  60. window.removeEventListener('beforeunload', report);
  61. }
  62. timeEngaged = 0;
  63. startEngage = new Date().getTime();
  64. reportTimer = window.setTimeout(report, 15000);
  65. };
  66.  
  67. addListener('mousedown', pulse);
  68. addListener('keydown', pulse);
  69. addListener('scroll', pulse);
  70. addListener('mousemove', pulse);
  71. addListener('beforeunload', report);
  72. idleTimer = window.setTimeout(setIdle, 5000);
  73. reportTimer = window.setTimeout(report, 15000);
  74. })();
  75. </script>
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement