如何确定用户是否实际在查看网页?

时间:2011-02-12 23:35:30

标签: javascript events

是否可以确定用户是在当前网页上处于活动状态,还是专注于其他标签或窗口?

如果切换标签,似乎在超时/间隔上设置的任何JavaScript都会继续运行。当用户不在页面上时能够“暂停”事件会很好。

将鼠标悬停事件附加到身体上是否会起作用,或者是否会过于消耗资源?

5 个答案:

答案 0 :(得分:4)

您可以在onfocus/onblur上放置window个活动。

窗口上有wide support for those events

示例: http://jsfiddle.net/xaTt4/

window.onfocus = function() {
    // do something when this window object gets focus.
};

window.onblur = function() {
    // do something when this window object loses focus.
};

答案 1 :(得分:1)

Open Web Analytics(可能还有一些其他跟踪工具)有action tracking

答案 2 :(得分:0)

您可以使用mousemove事件保持活动变量(假设用户不会将鼠标停留在页面上)。当此变量(可能是时间戳)未在x秒内更新时,您可以说该页面未处于活动状态并暂停任何脚本。

只要您不在身体事件处理程序中进行大量处理,您应该没问题。它应该只更新变量,然后让脚本以一定的间隔轮询它来进行处理/检查(比如说每1000毫秒)。

答案 3 :(得分:0)

将侦听器附加到mousemove,keyup并滚动到文档。

我使用这个throttle/debounce function(没有jQuery,即使它是一个jQuery插件,如果存在jQuery)也只能运行代码在〜250ms内响应它们,这样你就不会触发一些代码在鼠标移动的每个像素上。

答案 4 :(得分:0)

您还可以使用文档的visibilityState

document.addEventListener("visibilitychange", function() {
  if( document.visibilityState === 'visible' ) {
    // Do your thing
  }
});

此API有wide acceptance