javascript – 是否可以知道用户在页面上花了多长时间?

前端之家收集整理的这篇文章主要介绍了javascript – 是否可以知道用户在页面上花了多长时间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个浏览器扩展程序,它运行用户访问的JS页面.

是否有“outLoad”事件或类似事件开始计算并查看用户页面上花了多长时间?

解决方法

我假设您的用户打开一个标签,浏览一些网页,然后转到另一个网页,返回到第一个标签等.您想要计算用户花费的确切时间.另请注意,用户可能会打开网页并保持其正常运行但只是离开.一小时后回来,然后再次访问该页面.您不希望将他离开计算机的时间计算在网页上花费的时间.为此,下面的代码每5分钟进行一次docus检查.因此,您的实际时间可能会偏离5分钟的粒度,但您可以根据需要调整间隔以检查焦点.另请注意,用户可能只是盯着视频超过5分钟,在这种情况下,以下代码将不计算在内.您必须运行智能代码来检查是否有闪存运行或其他东西.

这是我在内容脚本中所做的(使用jQuery):

  1. $(window).on('unload',window_unfocused);
  2. $(window).on("focus",window_focused);
  3. $(window).on("blur",window_unfocused);
  4. setInterval(focus_check,300 * 1000);
  5.  
  6. var start_focus_time = undefined;
  7. var last_user_interaction = undefined;
  8.  
  9. function focus_check() {
  10. if (start_focus_time != undefined) {
  11. var curr_time = new Date();
  12. //Lets just put it for 4.5 minutes
  13. if((curr_time.getTime() - last_user_interaction.getTime()) > (270 * 1000)) {
  14. //No interaction in this tab for last 5 minutes. Probably idle.
  15. window_unfocused();
  16. }
  17. }
  18. }
  19.  
  20. function window_focused(eo) {
  21. last_user_interaction = new Date();
  22. if (start_focus_time == undefined) {
  23. start_focus_time = new Date();
  24. }
  25. }
  26.  
  27. function window_unfocused(eo) {
  28. if (start_focus_time != undefined) {
  29. var stop_focus_time = new Date();
  30. var total_focus_time = stop_focus_time.getTime() - start_focus_time.getTime();
  31. start_focus_time = undefined;
  32. var message = {};
  33. message.type = "time_spent";
  34. message.domain = document.domain;
  35. message.time_spent = total_focus_time;
  36. chrome.extension.sendMessage("",message);
  37. }
  38. }

猜你在找的JavaScript相关文章