js 监听当前页面是否正在被用户浏览

需求:当用户浏览当前网页的时候,每隔3s或者5s调取一次数据接口,进行页面数据的刷新。

方案1:监听用户在当前页面上鼠标是否有移动,如果有移动则执行函数刷新页面数据

 //做判断 当dom上有操作的时候 开始执行接口 每5s刷新一次数据
   // 为window添加mousemove,移动时设置变量为true,静止后为false;
  (function () {
    let isMove = false, timer = null;
    window.onmousemove = function () {
      isMove = true;
      clearTimeout(timer);
      console.log('移动时',isMove); // 移动时
      timer = setTimeout(function () {
        isMove = false;
        refreshCount()
        console.log('静止后',isMove); // 静止后
      }, 5000);
    }
  }());

但是这样做,在我本地测试没有问题,去老大电脑上演示时,鼠标不移动也在不停的打印,导致这个方法被pass掉。

方案2:使用visibilitychange事件与focus、blur事件相结合,判断用户是否浏览当前页面

<script>
    $(document).on('visibilitychange', function(e) {
        if (e.target.visibilityState === "visible") {
            document.title = '被发现啦!';
        } else if (e.target.visibilityState === "hidden") {
            document.title = '藏好啦!';
        }
    });

	window.onblur = function () {
	    console.log("失去焦点");
	}
	document.addEventListener('visibilitychange',function(){
	    if(document.visibilityState==='hidden'){
	        console.log("选项卡切换");
	    }
	});
</script>

这需要用户点击别的选项卡或者在当前页面中有操作时才会捕捉到,但是并不好去实时的知道用户是否浏览当前页面。


方案3:使用当前页面中的某一个元素做监听(例如元素list-page)

 setInterval(()=>{
      if(!$("#list-page").is(":hidden")){
        window.refreshCount();//执行刷新页面数据的方法
      }
    },15000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马码码1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值