HTML与JavaScript实现网页切屏监控功能

作者:小圆点

时间:2026-10-24

浏览:168

本文介绍如何使用HTML和JavaScript监控网页切屏行为。通过监听visibilitychange事件获取页面可见状态,结合window.onblur/onfocus处理焦点切换,并利用sessionStorage记录离开次数与时间戳。文章提供了完整的代码示例,解析如何区分部分可见与完全隐藏状态,实现精确的切屏计时与统计功能。

文章目录

项目概述

该项目的灵感来源于网络博客中看到的案例,作者对这种实现方式感到好奇,因此进行了探索与复现。

项目目标

  • 实时监控网页的可见性状态。
  • 统计用户离开页面的次数。
  • 记录每次离开页面的具体时间。

实现切屏监控的核心在于利用Web API中的visibilitychange事件。

该事件用于监听页面可见性的变化,相关文档可参考MDN上的visibilitychange接口说明。

同时需要关注Document.visibilityState属性,以获取当前的页面状态值。

基本逻辑是通过监听visibilitychange事件,读取document.visibilityState的值,从而判断页面是否处于隐藏状态并执行相应操作。

document.addEventListener("visibilitychange", function() {
  console.log( document.visibilityState );
});

HTML结构搭建

项目概述

首先创建一个标准的HTML5页面结构,包含基本的meta标签和标题。

监控页面可见性

通过addEventListener监听visibilitychange事件,并在回调中打印document.visibilityState的值,以观察不同状态下的输出。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个标签</title>
</head>
<body>
    <h1>这是第一个标签页</h1>

    <script>
        document.addEventListener('visibilitychange' , () => {
            let state = document.visibilityState

            if(state == "hidden") {
                document.title = "我知道,你切换标签页了--tab1"
            } else {
                document.title = "嘻嘻,你又回来了"
            }
        })
    </script>
</body>
</html>

项目概述

深入监控切屏行为

根据MDN文档,visibilityState为visible时页面可能只是部分可见(如分屏模式),此时visibilitychange事件仍会被触发,因此仅靠此API无法精准监控分屏状态。

为了更准确地判断用户是否切换了页面焦点,需要额外监控是否foucus状态,即通过window.onblur和onfocus事件来辅助判断。

window.onblur = () => {
            document.title = "你居然还切屏???--tab1"
        }

        window.onfocus = () => {
            document.title = "好吧,你回来了--tab1"
        }

项目概述

时间记录机制

引入一个布尔标志位isCut来标识是否发生了切屏或标签页切换,并在触发时保存当前的时间戳lastTime。

当用户重新回到页面时,再次触发相关逻辑,计算当前时间与lastTime的差值,从而显示切屏持续的时间。

由于切屏和重新返回可能多次发生,建议将记录时间和计算差值的逻辑封装为独立的函数,以便复用。

	let isCut = false
        let lastTime;

	function recordTime() {
            isCut = true
            lastTime = Date.now()
        }

        function showTimeDiff() {
            if (isCut) {
                let timeDiff = (Date.now() - lastTime) / 1000;
                // alert(`你切屏出去${timeDiff}`)
                console.log(timeDiff);
                isCut = false
            }
        }

项目概述

统计离开次数

无论是切屏还是打开新标签页,都需要进行计时统计,且这些数据不应因页面刷新而丢失。

考虑到数据的持久性需求,可以使用sessionStorage来存储离开次数,因为sessionStorage在会话期间(即关闭浏览器前)数据保持有效。

function countTimes() {
            let store = window.sessionStorage.getItem('leave-times')
            if( store === null) {
                window.sessionStorage.setItem('leave-times', 0)
                return
            }
            store ++;
            window.sessionStorage.setItem('leave-times' , store);
        }

项目概述

本文介绍了利用HTML和JavaScript实现网页切屏监控的方法,涵盖了状态监听、时间记录及次数统计。如需了解更多JS监控切屏相关内容,可搜索本站往期文章或继续阅读后续教程,感谢大家的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章