你不会还不知道如何监测用户的网络是否在线吧?

news2024/11/26 19:32:44

我最近遇到一个需求,要给网站添加一个用户网络离线提醒。要求我们要实时监测用户的网络状态,当用户断网了,我们要立马给用户弹出一个断网提醒。

那你可能会问,为什么要做这么一个需求呢?用户断网了,网页不就加载不出来了吗?用户不就知道了吗?

哈哈这确实也是一种情况,但是这只其中一种情况,在现实中更多的情况是,用户在访问我们的网站时发生断网,这时我们的网站数据已经被浏览器缓存,因此在网站上并看不出有什么不同。只有在加载新内容的情况下才会有所区别。那当然这样给用户的体验是十分不好的,所以我们要在用户网络断开的时候,给用户弹出一个弹框。来告诉用户网站新内容加载不出来的原因。来提高用户的体验感

如何检查是否有网络

我们可以利用navigator.onLineAPI 来检测网络状态。navigator.onLine会返回一个布尔值来显示用户是否在线。true表示在线,false表示离线,只要浏览器连接到网络的状态发生改变,属性值就会发生改变

我们可以监听网页加载事件,在网页加载时获取navigator.onLine的值

window.addEventListener('load', () => {const status = navigator.onLine;
}); 

上面的做法在网站最开始加载的时,是可以准确获取用户的网站状态的。但是有一个缺点,就是当获取完用户的网络状态后,网络又发生改变,状态值会无法及时更新!!!

怎么才能解决这个问题呢?

我们可以写一个监听断网和联网来解决这个问题

window.addEventListener('offline', (e) => {console.log('offline');
});

window.addEventListener('online', (e) => {console.log('online');
}); 

那我们来做一个完整的小案例来监测我们的用户是否断网

小案例

HTML

<div class="status"><div class="offline-msg">你的网络断开了😢</div><div class="online-msg"> 你已经连上网络 🔗</div>
</div> 

CSS

html, body {padding: 0;margin: 0;
}
.status {background: #efefef;display: flex;justify-content: center;align-items: center;min-height: 100vh;
}
.offline .online-msg {display: none;
}
.offline .offline-msg {display: block;
}
 div {padding: 1rem 2rem;font-size: 3rem;border-radius: 1rem;color: white;font-family: Roboto, "Helvetica Neue", Arial, sans-serif;
}
 .online-msg {background: green;display: block;
}
.offline-msg {background: red;display: none;
} 

JavaScript

const status1 = document.querySelector(".status");
//load 监听网页加载事件
window.addEventListener("load", () => {const handleNetworkChange = () => {if (navigator.onLine) {//给status下的offline-msg和online-msg添加类名样式status1.classList.remove("offline");} else {//给status下的offline-msg和online-msg添加类名样式status1.classList.add("offline");}};
// online该事件在浏览器开始在线工作时触发window.addEventListener("online", handleNetworkChange);// offline该事件在浏览器开始离线工作时触发。window.addEventListener("offline", handleNetworkChange);
}); 

最后

为大家准备了一个前端资料包。包含54本,2.57G的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为、南卡和漫步者蓝牙耳机怎么选?国产高性价比蓝牙耳机推荐

随着蓝牙耳机的快速发展&#xff0c;现如今使用蓝牙耳机的人也越来越多。其中&#xff0c;日益增多的国产蓝牙耳机品牌也逐渐被大众认识、认可。目前一些热销的国产蓝牙耳机&#xff0c;如华为、南卡和漫步者等都是大家比较熟知的品牌。那么&#xff0c;这三个品牌哪个性价比高…

已解决SqlServer报错Arithmetic overflow error converting expression to data type int

本文记录(pymssql.OperationalError) (8115, b’Arithmetic overflow error converting expression to data type int.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n’)报错解决方法&#xff0c;亲测有效&#x…

教师教学短视频录制有好用工具分享:

别再为制作微课发愁了啦&#xff0c;掌握这7款微课制作神器软件&#xff0c;让你的工作效率超级加倍&#xff01; 话不多说&#xff0c;一起来看看有哪些宝藏软件吧~ canvas 平台&#xff1a;电脑、网页、手机 定位&#xff1a;超多模板的制图软件 制作PPT、手抄报、奖状都…

手把手带你体验ChatGPT

1、ChatGPT介绍 ChatGPT&#xff0c;美国OpenAI 研发的聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人…

修复 KubeSphere 内置 Jenkins 的 Apache Log4j2 漏洞

作者&#xff1a;老Z&#xff0c;中电信数智科技有限公司山东分公司运维架构师&#xff0c;云原生爱好者&#xff0c;目前专注于云原生运维&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 简介 生产环境 KubeSphere 3.3.0 部署的…

【网络~】

网络一级目录二、socket套接字三、UDP数据报套接字四、TCP流套接字一级目录 1.局域网、广域网 2.IP地址是什么&#xff1f; IP地址是标识主机在网络上的地址 IP地址是如何组成的&#xff1f; 点分十进制&#xff0c;将32位分为四个部分&#xff0c;每个部分一个字节&#xff…

He3 更新:中文

系统级更新 焕然一新的主界面 这一次对整体 UI 界面做了一个大的调整&#xff0c;整体更加扁平美观&#xff0c;布局更加紧凑协调&#xff0c;视觉层面更加集中聚焦。 旧版 新版 工具内容居中 上下文工具以及关联工具放置在右侧&#xff0c;工具内容居中&#xff0c;在使…

ASP.NET Core3.1实战教程---基于Jquery单文件上传

这个必须记录一下费劲啊&#xff01;废了我2天的时间&#xff0c;昔日的net快速已经没落....就文件上传都这么费劲。 先说下要求&#xff08;在线apk文件上传实现手机端整包更新&#xff09;&#xff1a; 1、为了简化需求文件上传和数据提交分开执行 2、选完文件后按钮变成上…

web前端——HTML+CSS

整体框架 HTML CSS CSS进阶 CSS盒子模型 定位装饰 CSS精灵图 目录 基础认识 HTML 一、HTML概念 二、HTML页面固定结构 三、HTML标签的结构 四、标签学习 1、排版标签 1&#xff09;标题标签 2&#xff09;段落标签 3&#xff09;换行标签 4&#xff09;水平线…

【LeetCode】1223. 掷骰子模拟

1223. 掷骰子模拟 题目描述 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束&#xff0c;就是使得投掷骰子时&#xff0c;连续 掷出数字 i 的次数不能超过 rollMax[i]&#xff08;i 从 1 开始编号&#xff09;。 现在&#xff0c;…

第八节 Linux 设备树

Linux3.x 以后的版本才引入了设备树&#xff0c;设备树用于描述一个硬件平台的板级细节。在早些的linux内核&#xff0c;这些“硬件平台的板级细节”保存在linux 内核目录“/arch”&#xff0c;以ARM 平台为例“硬件平台的板级细节”保存在“/arch/arm/plat-xxx”和“/arch/arm…

python面试准备之--算法一

文章目录时间复杂度空间复杂度递归汉诺塔问题&#xff08;递归实例&#xff09;查找列表查找顺序查找&#xff08;Linear Search&#xff09;二分查找排序列表排序冒泡排序(Bubble Sort)选择排序插入排序快速排序堆排序归并排序希尔排序计数排序基数排序时间复杂度 时间复杂度是…

机器(深度)学习中的 Dropout

在这篇文章[1]中&#xff0c;我将主要讨论神经网络中 dropout 的概念&#xff0c;特别是深度网络&#xff0c;然后进行实验&#xff0c;通过在标准数据集上实施深度网络并查看 dropout 的影响&#xff0c;看看它在实践中实际影响如何。 1. Dropout是什么&#xff1f; ★ 术语“…

迷宫最短路径【Java实现】

题目描述 现有一个n∗m大小的迷宫&#xff0c;其中1表示不可通过的墙壁&#xff0c;0表示平地。每次移动只能向上下左右移动一格&#xff0c;且只能移动到平地上。假设左上角坐标是(1,1)&#xff0c;行数增加的方向为x增长的方向&#xff0c;列数增加的方向为y增长的方向&#…

Protocol Buffers V3语法全解

目录protobuf介绍protobuf使用protoc命令语法定义消息类型指定字段类型分配字段编号指定字段规则添加更多消息类型注释保留字段从.proto文件生成了什么&#xff1f;值类型默认值枚举使用其他消息类型导入定义嵌套类型更新消息类型未知字段any任意类型oneofoneof 特性兼容性问题…

awk命令

一.介绍 awk是专门为文本处理设计的编程语言&#xff0c;是一门数据驱动的编程语言。与sed类似&#xff0c;都是以数据驱动的行处理软件&#xff0c;主要用于数据扫描&#xff0c;过滤和汇总。数据可以来自于标准输入&#xff0c;管道或者文件。 二.语法 awk是一种处理文本文件…

Vite+Vue3实现版本更新检查,实现页面自动刷新

ViteVue3实现版本更新检查&#xff0c;实现页面自动刷新1、使用Vite插件打包自动生成版本信息2、Vite.config.ts配置3、配置环境变量4、路由配置现有一个需求就是实现管理系统的版本发版&#xff0c;网页实现自动刷新页面获取最新版本 搜索了一下&#xff0c;轮询的方案有点浪费…

Mysql:避免重复的插入数据方法汇总

最常见的方式就是为字段设置主键或唯一索引&#xff0c;当插入重复数据时&#xff0c;抛出错误&#xff0c;程序终止&#xff0c;但这会给后续处理带来麻烦&#xff0c;因此需要对插入语句做特殊处理&#xff0c;尽量避开或忽略异常&#xff0c;下面我介绍4种方法&#xff1a; …

【Windows10】电脑副屏无法调节屏幕亮度?解决方法

先说下情况&#xff0c;本人对显示器不太懂&#xff0c;属于小白 这个副屏无法调节的问题出现也已经很久了&#xff0c;但是之前亮度适合就无所谓&#xff0c;今天突然按了之后很亮&#xff0c;于是就找问题。 第一步&#xff0c;我直接百度&#xff0c;遇事不决&#xff0c;百…

59 双向循环神经网络【动手学深度学习v2】

59 双向循环神经网络【动手学深度学习v2】 深度学习学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV12X4y1c71W/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 核心思想&#xff1a;取决于过去和未来的上下文&#xff0c;来预测当前的…