用户登录

用户连接到互联网的时候,浏览器会触发一个 online 事件 … 断开网络的时候,会触发一个 offline 事件 … 在线的时候,navigator.onLine 可以返回一个真的值 …

利用这些东西,我们可以让应用针对在线还有离线这些情况去做出不同的反应 ….

这个视频我们去实现一个简单的功能 … 就是在用户在联网状态下 … 在应用上显示一个 在线 的小标签 … 断网以后 … 这个在小标签会变成 离线 …

先看一下需要的 HTML 代码 …

在这里有一个 <span> 标签 .. 上面定义了 online-status 这个 ID, 另外还有两个 css 类 … badge ,还有 success ….. badge 这个类的样式来自 bootstrap 的 badge 组件 … 默认它的背景颜色是一种灰色 ...

success 这个类的样式就是给小标签添加一个绿色的背景 ..

标签里的文字默认是 在线 … 在离线的状态下,我们可以去掉 success 这个类 … 然后再把文字改成 离线 …

script.js

打开 script.js 去添加需要的代码 …

先添加一个 online 还有 offline 事件的监听器 … 这两件事件属于 window 这个对象 …

window.addEventListener('online', onlineStatus);
window.addEventListener('offline', onlineStatus);

这样用户联网或者断网以后,都会去执行这个 onlineStatus … 在上面,我们再去定义这个函数 …

先获取到用来显示在线或者离线标签的元素 …

然后用一个 if 语句 … 去判断一下用户的联网状态 …. navigator.onLine 在处于联网状态的时候,会返回一个真的值 …

如果用户是联网状态 … 设置状态标签里的文字为 在线 … 再设置它上面使用的 css 类 …

下面再用一个else … 去定义一下,如果当前的状态是离线的状态要做的事 …

设置标签里的文字为 离线 …. 用到的 css 类是 badge … 这里我们去掉了 success 类 … 所以在离线的时候,标签的背景会是一种灰色 …

同样在页面加载以后,需要去调用这个 onlineStatus 函数。

// 在线状态
function onlineStatus() {
var status = document.getElementById("online-status");
if (navigator.onLine){
status.innerHTML = "在线";
status.className = "badge success";
}else{
status.innerHTML = "离线";
status.className = "badge";
}
}

测试

保存 … 打开浏览器去测试一下 … 刷新 …

当前的状态是联网的 … 所以这个小标签上会显示,在线 … 并且背景是绿色的 …

下面我们再断开网络试一下 ….

断网以后,标签文字会变成 离线 … 背景会变成 灰色 …

如果再次联网的话 … 标签又会变成绿色的在线 ...

在线与离线事件《 HTML5:应用缓存 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点