På jobben utvikler vi en PWA (blant annet), og som en ny funksjon måtte vi advare brukere når de er frakoblet . Dette bør oppmuntre dem til først å gjenopprette nettverkstilkoblingen før de iverksetter ytterligere tiltak, og unngå mulige uønskede bivirkninger fra å være frakoblet.
Etter testing så jeg på hvordan det ble implementert og ble positivt overrasket.
Navigator.onLine
Navigator-objektet, som du får tilgang til i nettleseren via window.navigator, har en onLine-egenskap. Denne boolen er utsatt for falske positiver, men vi var ikke ute etter perfekt dekning på denne.
Men pass på den store L!
window.navigator.online
// undefined
window.navigator.onLine
// true
Online og offline arrangementer
Så vi vet hvordan vi kan sjekke om en bruker er online eller offline. Men hvordan kan vi oppdage endringer ? Å skrive tilpassede arrangementer har aldri vært noens favoritt, men heldigvis er online og offline arrangementer lett tilgjengelige.
Vil du prøve det? Kopier og lim inn følgende kode i en HTML-fil og åpne den i nettleseren. Deretter leker du med nettverkstilkoblingen (i operativsystemet eller nettleserens DevTools) for å se den i aksjon.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Online/offline</title>
</head>
<body>
<h1 id="status"></h1>
</body>
<script>
function userIsOnline() {
document.getElementById("status").textContent = "User is online";
}
function userIsOffline() {
document.getElementById("status").textContent = "User is offline";
}
if (window.navigator.onLine) {
userIsOnline();
} else {
userIsOffline();
}
window.addEventListener("online", userIsOnline);
window.addEventListener("offline", userIsOffline);
</script>
</html>
Nettverksinformasjon
Selv om det var utenfor rekkevidden for vårt bruksområde, var det interessant å oppdage at window.navigation.connection inneholdt flere nettverksgodbiter, i form av en NetworkInformation-forekomst.
I mitt tilfelle inneholdt den følgende:
downlink: 10,
effectiveType: "4g",
rtt: 50,
saveData: false
Hehe, min downlink virker treg som faen? Det er ment å representere nedlastingshastigheten min i Mbps, men den er ikke engang i nærheten av det jeg forventer.
Vel, det virker som Chrome vilkårlig setter denne verdien til 10 som et tiltak mot fingeravtrykk.
Vel, takk Google for at du holder meg trygg;)