表单长时间无响应,页面失效提示

先贴代码,有时间在解释

html 复制代码
<template>
  <div :class="$style.root">
    <div>主页面</div>
    <el-input v-model="txt" @input="onChange" />
  </div>
</template>
<script>
const TIME = 10; //时间,用于限定多长时间无操作提醒
export default {
  data() {
    return {
      txt: 1,
      worker: null,
    };
  },
  mounted() {
    this.worker = new Worker('/worker.js');

    this.worker.postMessage('start');
    this.worker.addEventListener('message', e => {
      console.log('e: ', e.data);
      const { times } = e.data;
      if (times >= TIME) {
        this.$message.error('页面失效');
        // 结束通信
        this.worker.postMessage('end');
      }
    });
    document.addEventListener('visibilitychange', function () {
      if (document.visibilityState == 'visible') {
        console.log('页面已显示');
      } else if (document.visibilityState == 'hidden') {
        console.log('页面已隐藏');
      }
    });
  },
  methods: {
    onChange() {
      this.worker.postMessage('end');
      this.worker.postMessage('start');
    },
  },
};
</script>
<style lang="scss" module>
@import '../../styles/common';

.root {
  @include center;
}
</style>

// public下面的worker.js

javascript 复制代码
let timer;
self.addEventListener('message', e => {
  let times = 0;
  let msg;
  if (e.data == 'start') {
    timer = setInterval(() => {
      times++;
      msg = {
        status: 'editing',
        times,
      };
      self.postMessage(msg);
    }, 1 * 1000);
  } else {
    times=0;
    clearInterval(timer);
  }
});
相关推荐
学嵌入式的小杨同学36 分钟前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
weixin_425543731 小时前
TRAE CN3.3.25 构建的Electron简易DEMO应用
前端·typescript·electron·vite·nestjs
Mr Xu_2 小时前
【Vue3 + ECharts 实战】正确使用 showLoading、resize 与 dispose 避免内存泄漏
前端·信息可视化·vue·echarts
0思必得02 小时前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化
雯0609~2 小时前
hiprint:实现项目部署与打印1-官网提供普通html版本
前端·html
yuezhilangniao2 小时前
AI智能体全栈开发工程化规范 备忘 ~ fastAPI+Next.js
javascript·人工智能·fastapi
不绝1913 小时前
UGUI——进阶篇
前端
~牧马~3 小时前
【记录63】electron打包vue项目之踩坑
vue.js·electron·electron与node兼容
Exquisite.3 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
铅笔侠_小龙虾4 小时前
Flutter Demo
开发语言·javascript·flutter