前端判断电脑是否断网 并且在重连的时候发请求给后端记录

用electron 打包的电脑软件 加了一个断网提示和联网发请求给后端做记录

javascript 复制代码
<!DOCTYPE html>
<html lang="">

<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">
  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  <!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
  <title>吧台绿树电竞 - V1.0.0 店铺ID</title>
  <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> 

</head>

<body>
  <noscript>
    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
        Please enable it to continue.</strong>
  </noscript>
  <div id="app"></div>
  <!-- built files will be auto injected -->

  <!-- 页面内容 -->
  <script>
   
    let offlineTime = null;
    // let nowtim = new Date()
    window.addEventListener('online', () => {
      const now = new Date();
      if (offlineTime) {
        const offlineDuration = now - offlineTime; // 离线时长(毫秒)  
        console.log(`网络重连成功,上次断网时间:${new Date(offlineTime).toLocaleString()}, 重连时间:${now.toLocaleString()}, 离线时长:${offlineDuration} 毫秒`);
        alert(`网络重连成功,离线时长:${offlineDuration / 1000 / 60} 分钟`);
        this.sendAjaxRequest() //断网时间
        localStorage.setItem('nowTime', now.toLocaleString()); //重连
        this.nowRequest()

      } else {
        console.log(`网络重连成功,之前没有断网记录`);
      }
      offlineTime = null; // 重置离线时间  
    });

    window.addEventListener('offline', () => {
      offlineTime = new Date(); // 记录断网时间  
      console.log(`当前断网,时间:${offlineTime.toLocaleString()}`);
      localStorage.setItem('offlineTime', offlineTime.toLocaleString()); //断网
      alert('当前断网');
    });
    

    // 断网
    function sendAjaxRequest() {  
            var formData = new FormData();  
            formData.append('storeId', sessionStorage.getItem("storeId") || ''); 
            formData.append('type', 0);  
            formData.append('ip', sessionStorage.getItem("ip") || ''); 
            formData.append('createTime', offlineTime.toLocaleString() || ''); 
            var xhr = new XMLHttpRequest();  
            xhr.open("POST", 'http://192.168.0.124:8091/bar/log/add', true); 
            xhr.onload = function () {  
                if (xhr.status === 200) { 
                } else {  
                    console.error("Request failed. Returned status of " + xhr.status);  
                }  
            }; 
            xhr.send(formData);  
        };

        //重连
        function nowRequest() {  
          let nowtim = new Date()
            var Data = new FormData();  
            Data.append('storeId', sessionStorage.getItem("storeId") || ''); 
            Data.append('type', 1);  
            Data.append('ip', sessionStorage.getItem("ip") || ''); 
            Data.append('createTime', nowtim.toLocaleString() || ''); 
            var xhrb = new XMLHttpRequest();  
            xhrb.open("POST", 'http://192.168.0.124:8091/bar/log/add', true); 
            xhrb.onload = function () {  
                if (xhrb.status === 200) {  
                    console.log(xhrb.responseText);  
                } else {  
                    console.error("Request failed. Returned status of " + xhrb.status);  
                }  
            };  
            xhrb.send(Data);  
        } 

  </script>
</body>

</html>

我是写在public- index.html 文件中 这样他只要是在运行中都可以 判断是否断网

相关推荐
打呵欠的猫3 小时前
让 AI 帮你写 Git Commit Message:从"fix bug"到语义化提交只需一个 Hook
前端·ai编程
labixiong3 小时前
CSS 锚点定位实测:零 JS 实现气泡跟随,自动翻转很香但暗藏 3 个致命坑
前端·css
qibmz3 小时前
用 DeepSeek 给 GitHub 仓库加 PR 自动 Review
前端
计算机魔术师3 小时前
幻觉率从 4.2% 降到 2% 又退回,GPT-6 Astra 到底在藏什么
前端
梨想橙汁3 小时前
Git 常用命令大全:提交、查看日志、版本回退、文件撤销
前端·javascript
Amos_Web3 小时前
Rspack 源码解析(三):从入口到依赖图,读懂 Make 阶段的 Rust 任务循环
前端·rust
晴天163 小时前
浏览器中ESM与AMD模块共存的解决方案
前端·node.js
芳心粽伙饭4 小时前
CSS第一章 CSS引入
前端·css
雪芽蓝域zzs4 小时前
第三十二节:部门组织管理(el‑tree 组织树
前端·javascript·vue.js
leoZ2314 小时前
第 7 篇:进阶——校验、联动、列表页
开发语言·前端·javascript·vue.js·人工智能·目标检测·ecmascript