- 我们需要追踪用户在网站上的有效停留时间。
- 大多数用户在结束后会保持标签页打开并转移到另一个标签页。
- 网站停留时间极其不准确。
是否有一种JavaScript事件可以追踪当前标签页失去焦点?
是否有一种JavaScript事件可以追踪当前标签页失去焦点?
这应该在选项卡切换和浏览器窗口失去焦点时都起作用:
function onBlur() {
document.body.className = 'blurred';
};
function onFocus(){
document.body.className = 'focused';
};
if (/*@cc_on!@*/false) { // check for Internet Explorer
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
mousemove
和scroll
来实现,只要这些事件在一定时间间隔内触发,就将访问者视为活动状态。这也包括他们保持浏览器打开和离开计算机的情况。虽然这个问题很久以前就被提出了,但可能仍会被某些人发现。在这种情况下,可以使用页面可见性 API:
https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
document.visibilityState
- 获取当前标签页的状态。
document.onvisibilitychange
- 添加状态变化的回调函数。
<script>
document.onvisibilitychange = () => {
if (document.visibilityState === "hidden") {
console.log("tab inactive");
}
if (document.visibilityState === "visible") {
console.log("tab active");
}
};
</script>
<body>
或其他地方添加一个“mouseout”处理程序,并跟踪鼠标何时离开窗口(当鼠标移动以选择另一个选项卡时,它会离开窗口),但你并不真正知道那是否会发生。 - Pointy<body>
的任何“模糊”事件。但我确实看到了“mouseout”。 - Pointy