利用JavaScript實(shí)現(xiàn)檢測用戶是否在線功能
有時(shí)你可能希望增強(qiáng)你的應(yīng)用程序以通知用戶他們可能已經(jīng)失去了互聯(lián)網(wǎng)連接。
用戶可能正在訪問你的網(wǎng)站并收到緩存版本,因此通常看起來他們的互聯(lián)網(wǎng)仍在工作。
然而,他們失去了引擎蓋下的連接,并且不會(huì)加載任何新內(nèi)容。
在這里向他們顯示一些消息以讓他們知道他們應(yīng)該檢查他們的連接可能是有益的。
檢測連接狀態(tài)
我們可以利用navigator.onLineAPI 來檢測連接狀態(tài)。
這將返回一個(gè)布爾值來指示用戶是否在線。
注意:請注意瀏覽器的實(shí)現(xiàn)方式不同,因此結(jié)果可能會(huì)有所不同。
這在初始加載時(shí)效果很好,所以我們可以做這樣的事情。
window.addEventListener('load', () => {
const status = navigator.onLine;
});
但是我們不知道加載后網(wǎng)絡(luò)狀態(tài)是否發(fā)生變化,這是不理想的。
我們可以訂閱離線和在線事件來監(jiān)聽這些特定的變化。
window.addEventListener('offline', (e) => {
console.log('offline');
});
window.addEventListener('online', (e) => {
console.log('online');
});
演示
讓我們設(shè)置一個(gè)快速演示來演示這一點(diǎn)。
我們將在屏幕中央使用一個(gè)基本的文本元素,但你當(dāng)然可以按照你喜歡的任何方式設(shè)置樣式和實(shí)現(xiàn)它。
注意:我正在使用 SCSS 來設(shè)置樣式
<div class="status"> <div class="offline-msg">You're offline ??</div> <div class="online-msg">You're connected ??</div> </div>
我們在默認(rèn)為連接狀態(tài)的前提下構(gòu)建它。
讓我們添加一些基本樣式。
.status {
background: #efefef;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
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;
}
}
默認(rèn)情況下,這只會(huì)顯示在線消息。
讓我們添加一個(gè)條件,如果狀態(tài)元素有一個(gè)離線類,我們切換兩個(gè) div。
.status {
&.offline {
.online-msg {
display: none;
}
.offline-msg {
display: block;
}
}
}
現(xiàn)在,如果我們將離線類添加到狀態(tài) div,我們應(yīng)該會(huì)看到離線消息。
那么我們?nèi)绾胃鶕?jù)網(wǎng)絡(luò)狀態(tài)切換這些呢?
const status = document.querySelector('.status');
window.addEventListener('load', () => {
const handleNetworkChange = () => {
if (navigator.onLine) {
status.classList.remove('offline');
} else {
status.classList.add('offline');
}
};
window.addEventListener('online', handleNetworkChange);
window.addEventListener('offline', handleNetworkChange);
});
是的,這段代碼可以解決問題!
我們在第一次加載時(shí)對其進(jìn)行了初始化,并創(chuàng)建了一個(gè)新函數(shù)來檢查導(dǎo)航器狀態(tài)。
然后我們添加事件監(jiān)聽器來監(jiān)聽變化,這樣我們就可以根據(jù)它們采取行動(dòng)。
在更改時(shí),它可以添加或刪除類名。
如果我們嘗試一下,它看起來像這樣。

到此這篇關(guān)于利用JavaScript實(shí)現(xiàn)檢測用戶是否在線功能的文章就介紹到這了,更多相關(guān)JavaScript檢測用戶是否在線內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MUI頂部選項(xiàng)卡的用法(tab-top-webview-main)詳解
最近用MUI做手機(jī)app應(yīng)用的時(shí)候,遇到的小bug,這里小編給大家分享MUI頂部選項(xiàng)卡的用法(tab-top-webview-main)詳解,感興趣的朋友一起看看吧2017-10-10
JS仿Windows開機(jī)啟動(dòng)Loading進(jìn)度條的方法
這篇文章主要介紹了JS仿Windows開機(jī)啟動(dòng)Loading進(jìn)度條的方法,實(shí)例分析了javascript操作html元素及對應(yīng)樣式實(shí)現(xiàn)特效的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
javascript實(shí)現(xiàn)視頻彈幕效果(兩個(gè)版本)
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)視頻彈幕效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
JavaScript數(shù)組Array的一些常用方法總結(jié)
JavaScript的Array對象是用于構(gòu)造數(shù)組的全局對象,數(shù)組是類似于列表的高階對象,下面這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組Array的一些常用方法,需要的朋友可以參考下2021-11-11
Bootstrap導(dǎo)航條學(xué)習(xí)使用(一)
這篇文章主要為大家詳細(xì)介紹了Bootstrap導(dǎo)航條的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02

