online-status
Version:
front-end connectivity monitor for JS apps.
1 lines • 1.6 kB
JavaScript
!function(){var a={writeLogToLocalStorage:!0,el:{textClassName:"onlineStatusText",online:{backgroundColor:"green",textColor:"white",text:"Connected"},offline:{backgroundColor:"red",textColor:"white",text:"Disconnected"}}},b=function(a,b){throw new Error("onlineStatus.js: "+a,b||null)},c=navigator&&"boolean"==typeof navigator.onLine?navigator.onLine:b('expected "navigator.onLine" is not an accessible property in the browser.'),d=function(a){d.log+="["+new Date+"] : "+a+" :"};d.log="["+new Date+"] : script loaded :";var e=function(a){return null==c?!1:void(a&&(a.online&&("function"==typeof a.online&&e.online.queue.push(a.online),"array"==typeof a.online&&a.online.forEach(function(b){e.online.queue.push(a.online[b])})),a.offline&&("function"==typeof a.offline&&e.offline.queue.push(a.offline),"array"==typeof a.offline&&a.offline.forEach(function(b){e.offline.queue.push(a.offline[b])})),a.el&&("undefined"!=typeof $||"undefined"!=typeof jQuery?(a.el instanceof jQuery||a.el instanceof $)&&(e.el=a.el[0]):e.el=a.el,f())))};e.online={queue:[]},e.offline={queue:[]},e.el=null;var f=function(){if(e.el){var b=e.el.querySelectorAll("."+a.el.textClassName)[0],d=c?"online":"offline";b.innerHTML=a.el[d].text,b.style.backgroundColor=a.el[d].backgroundColor,b.style.color=a.el[d].textColor}},g=function(){c=!0,d("connected/online status"),f(),e.online.queue.forEach(function(a){e.online.queue[a]()})},h=function(){c=!1,d("DISCONNECTED/offline status"),f(),e.offline.queue.forEach(function(a){e.offline.queue[a]()})};window.ononline=g,window.onoffline=h,window.onlineStatus={init:e,status:c,log:d.log}}();