检查用户当前是否在javascript中的页面上

时间:2014-01-04 13:30:59

标签: javascript jquery

如果用户当前在页面上或另一个标签页上,如何使用javascript进行检查? 我想聊聊时添加新邮件通知,但前提是用户在另一个标签页上。

3 个答案:

答案 0 :(得分:2)

您可以使用聊天框作为功能。

获取焦点或模糊事件,然后添加通知功能。

如果您仍想坚持这一点,请尝试以下:window.onblurwindow.onfocus事件并添加功能。

答案 1 :(得分:0)

您可以设置cookie onload,并在onbeforeunload上删除它。这样,如果cookie已设置为onload,则表示用户已在访问您的页面。

答案 2 :(得分:0)

鉴于您要求的内容,即确认用户是否在您的页面或其他标签上,我不认为检查聊天框上的焦点是否合适。如果用户完全点击了框外,那么他们的状态将变为非活动状态。

鼠标悬停触发器

相反,我会检测<body>元素上的鼠标悬停事件。你的触发器看起来像这样:

<body style="min-height:600px; width:100%;" onmouseover="changeStatus(true);" onmouseout="changeStatus(false);">

显然你必须改进css或设置一个javascript函数,以确保<body>元素填满整个屏幕。

事件处理程序

然后你会设置一个处理触发器的javascript函数,如下所示:

<script type="text/javascript">
  var i=0;
  var pageStatus=true;

  function changeStatus(status) { 
    i+=1;
    if (status==true) {
      console.log(i+' Page is active');
      pageStatus=true;
      /* change the users status to active */
    } else {
      pageStatus=false;
      window.setTimeout(function() { if(pageStatus==false) { console.log(i+' Page is inactive'); /* change the users status to inactive */ } }, 1000);
    }
  }
</script>

我建议你在更改用户状态之前对onmouseout触发器有一些延迟,因为有时候鼠标会离开页面一秒钟,而用户不会切换到另一个标签或程序。我上面写的函数边缘有点粗糙,但应该形成一个声音基础来开发完整的事件处理程序。