是否可以确定用户是在当前网页上处于活动状态,还是专注于其他标签或窗口?
如果切换标签,似乎在超时/间隔上设置的任何JavaScript都会继续运行。当用户不在页面上时能够“暂停”事件会很好。
将鼠标悬停事件附加到身体上是否会起作用,或者是否会过于消耗资源?
答案 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。