Javascript code that calculates how much active time is spent on a tab and takes into account changing tabs, switching windows, or leaving the page.
Demo here http://bl.ocks.org/d/4393523/
Javascript code that calculates how much active time is spent on a tab and takes into account changing tabs, switching windows, or leaving the page.
Demo here http://bl.ocks.org/d/4393523/
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <title>Time Spent on Page</title> | |
| <style type="text/css"> | |
| body { | |
| font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | |
| width: 400px; | |
| margin: 50px auto; | |
| color: #444; | |
| } | |
| h1 { font-weight: 400; } | |
| li { margin: 1em 0; font-weight:300; } | |
| </style> | |
| </head> | |
| <body> | |
| <h1>Time Spent on Page</h1> | |
| <small>Change tabs, switch windows, or leave the page and the active amount of time on this page is logged</small> | |
| <a href="https://gist.github.com/4393523" target="_blank"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a> | |
| <script src="timeSpentOnPage.js"></script> | |
| </body> | |
| </html> |
| var hidden, state, visibilityChange, | |
| _this = this; | |
| if (document.hidden != null) { | |
| hidden = "hidden"; | |
| visibilityChange = "visibilitychange"; | |
| state = "visibilityState"; | |
| } else if (document.mozHidden != null) { | |
| hidden = "mozHidden"; | |
| visibilityChange = "mozvisibilitychange"; | |
| state = "mozVisibilityState"; | |
| } else if (document.msHidden != null) { | |
| hidden = "msHidden"; | |
| visibilityChange = "msvisibilitychange"; | |
| state = "msVisibilityState"; | |
| } else if (document.webkitHidden != null) { | |
| hidden = "webkitHidden"; | |
| visibilityChange = "webkitvisibilitychange"; | |
| state = "webkitVisibilityState"; | |
| } | |
| this.d = new Date(); | |
| this.new_d = new Date(); | |
| // Calculates Time Spent on page upon switching windows | |
| setInterval((function() { | |
| if (document.hasFocus() === false) { | |
| _this.new_d = new Date(); | |
| var time_spent = Math.round((_this.new_d - _this.d) / 1000); | |
| doSomething("Switched Window", time_spent); | |
| _this.d = new Date(); | |
| } | |
| }), 200); | |
| // Calculates Time Spent on page upon leaving/closing page | |
| window.onunload = function() { | |
| _this.new_d = new Date(); | |
| var time_spent = Math.round((_this.new_d - _this.d) / 1000); | |
| doSomething("Left Page", time_spent); | |
| }; | |
| // Calculates Time Spent on page upon unfocusing tab | |
| // http://davidwalsh.name/page-visibility | |
| document.addEventListener(visibilityChange, (function(e) { | |
| if (document[state] === 'visible') { | |
| _this.d = new Date(); | |
| } else if (document[hidden]) { | |
| _this.new_d = new Date(); | |
| var time_spent = Math.round((_this.new_d - _this.d) / 1000); | |
| doSomething("Changed Tab", time_spent); | |
| } | |
| }), false); | |
| // Function that does something | |
| var doSomething = function(message, time_spent) { | |
| if (time_spent >= 1) { | |
| var text = "["+message+"] "+time_spent+" seconds" | |
| var item = document.createElement("li"); | |
| item.innerHTML = text; | |
| document.body.appendChild(item); | |
| console.log(text); | |
| } | |
| } |