PCãã©ã¦ã¶ã§ãããã¯ã¼ã¯æ¥ç¶ã®æç¡ãæ¤ç¥ããã«ã¯?
PCãã©ã¦ã¶ã§ãããã¯ã¼ã¯æ¥ç¶ã®æç¡ãæ¤ç¥ããã«ã¯ã©ããããããã ãã?
ä¸å¿「navigator.onLine」ã¨ããAPIã¯ãã。
window.navigator.onLine - Web API ã¤ã³ã¿ã¼ãã§ã¤ã¹ | MDN
ãã©ã¦ã¶ã®ãµãã¼ãå ·åã調ã¹ã¦ã¿ãã¨、å ¨ã¦ã®ãã©ã¦ã¶ã¨ããããã«ã¯ãããªãã、ã¾ãã¾ããµãã¼ãããã¦ãããã¨ãããã。
Can I use... Support tables for HTML5, CSS3, etc
ããã、ãã®APIã«ã¯è²ã ã¨åé¡ããããã¨ãããã«åãã£ã。
javascript - How to detect online/offline event cross-browser? - Stack Overflow
è¦ããã«、ChromeãSafariãªããããã¯ã¼ã¯æ¥ç¶ãåããæç¹ã§èªåçã«ãªãã©ã¤ã³ã¤ãã³ããæ¥ãã、FirefoxãOpera、IEã¯ãã©ã¦ã¶å´ã«「ãªãã©ã¤ã³ã¢ã¼ã」ã¨ããæ©è½ãããã®ã§、navigator.onLineã®å¤ã¯å®éã®ãããã¯ã¼ã¯æ¥ç¶ã«æç¡ã§ã¯ãªã「ãªãã©ã¤ã³ã¢ã¼ããã©ãã」ã®å¤ã«ãªã£ã¦ãã¾ã、ã¨ãã話。
ã¤ã¾ã、å ¨ããã£ã¦å½¹ã«ç«ããªã!
ã§ã¯ã©ãããã?
StackOverflowã§ãè°è«ããã¦ããã、è¦ããã«「ãµã¼ãã¼ã«ãªã¯ã¨ã¹ããæãã¦è¿ã£ã¦ããã°ãªã³ã©ã¤ã³ããã?」ã¨ããã·ã³ãã«ãªèãæ¹ãæãä¿¡é ¼ã§ãããã 。
è³¢ããããããªã、ãããã£ãã©ã¤ãã©ãªããã。
cvan/navigator.onLine-that-actually-works
æç´ã«ãããããªã、ãããåèã«ãªã。ã·ã³ãã«ã«XMLHttpRequestã使ã。
navigator.onLine alternative: serverReachable() | Louis-Rémi
ãã®ã³ã¼ããåèã«、å°ãæ¹é ãã¦ãã®ããã«ãã。
req.open()ã§ã®ã¡ã½ããã®æå®ã¯HEADã«ããæ¹ãé«éåã®ããã«ã¯å¥½ã¾ããã®ã ããã、ãã¼ã«ã«ã®ãããã°ãµã¼ãã¼ã«ãã£ã¦ã¯èããã¬ã¹ãã³ã¹ãé ãå ´åããã£ã。
ããã§、ãµã¼ãã¼ä¸ã«ã¼ããã¤ãã®HTMLãã¡ã¤ã«ãä½ã、HEADã§ã¯ãªãGETãæå®ãã¦ãã®ãã¡ã¤ã«ã®URLãæå®ããããã«ãã。æãããã®æ¹æ³ã¯éæ¿ã ã¨æããã。
ä¸å¿「navigator.onLine」ã¨ããAPIã¯ãã。
window.navigator.onLine - Web API ã¤ã³ã¿ã¼ãã§ã¤ã¹ | MDN
ãã©ã¦ã¶ã®ãµãã¼ãå ·åã調ã¹ã¦ã¿ãã¨、å ¨ã¦ã®ãã©ã¦ã¶ã¨ããããã«ã¯ãããªãã、ã¾ãã¾ããµãã¼ãããã¦ãããã¨ãããã。
Can I use... Support tables for HTML5, CSS3, etc
ããã、ãã®APIã«ã¯è²ã ã¨åé¡ããããã¨ãããã«åãã£ã。
javascript - How to detect online/offline event cross-browser? - Stack Overflow
…
Chrome and Safari will detect when you go "offline" automatically - meaning that "online" events and properties will fire automatically when you unplug your network cable.
Firefox (Mozilla), Opera, and IE take a different approach, and consider you "online" unless you explicitly pick "Offline Mode" in the browser - even if you don't have a working network connection.
…
è¦ããã«、ChromeãSafariãªããããã¯ã¼ã¯æ¥ç¶ãåããæç¹ã§èªåçã«ãªãã©ã¤ã³ã¤ãã³ããæ¥ãã、FirefoxãOpera、IEã¯ãã©ã¦ã¶å´ã«「ãªãã©ã¤ã³ã¢ã¼ã」ã¨ããæ©è½ãããã®ã§、navigator.onLineã®å¤ã¯å®éã®ãããã¯ã¼ã¯æ¥ç¶ã«æç¡ã§ã¯ãªã「ãªãã©ã¤ã³ã¢ã¼ããã©ãã」ã®å¤ã«ãªã£ã¦ãã¾ã、ã¨ãã話。
ã¤ã¾ã、å ¨ããã£ã¦å½¹ã«ç«ããªã!
ã§ã¯ã©ãããã?
StackOverflowã§ãè°è«ããã¦ããã、è¦ããã«「ãµã¼ãã¼ã«ãªã¯ã¨ã¹ããæãã¦è¿ã£ã¦ããã°ãªã³ã©ã¤ã³ããã?」ã¨ããã·ã³ãã«ãªèãæ¹ãæãä¿¡é ¼ã§ãããã 。
è³¢ããããããªã、ãããã£ãã©ã¤ãã©ãªããã。
cvan/navigator.onLine-that-actually-works
æç´ã«ãããããªã、ãããåèã«ãªã。ã·ã³ãã«ã«XMLHttpRequestã使ã。
navigator.onLine alternative: serverReachable() | Louis-Rémi
ãã®ã³ã¼ããåèã«、å°ãæ¹é ãã¦ãã®ããã«ãã。
/** * å®éã«ãµã¼ãã¼ã«æ¥ç¶ã§ãããã©ãããè¿ã * URLæå®ãç¡ããã°èªãã¹ãã®「/? + Math.random()」 */ function isServerReachable(url) { if (!url) { url = location.protocol + '//' + location.host + '/?' + Math.random(); } console.log('ãããã¯ã¼ã¯æ¥ç¶ã確èªãã¾ã:' + url); try { var req = new XMLHttpRequest(); req.open("GET", url, false); //åæã§æ¥ç¶ req.send(); if ((200 <= req.status && req.status < 300) || req.status == 304) { console.log('ãããã¯ã¼ã¯æ¥ç¶å¯è½ status=' + req.status + '(' + req.statusText + ')'); return true; } else { console.log('ãããã¯ã¼ã¯æ¥ç¶ã¨ã©ã¼ status=' + req.status + '(' + req.statusText + ')'); return false; } } catch (err) { console.log('ãããã¯ã¼ã¯æ¥ç¶ã¨ã©ã¼'); return false; } }
req.open()ã§ã®ã¡ã½ããã®æå®ã¯HEADã«ããæ¹ãé«éåã®ããã«ã¯å¥½ã¾ããã®ã ããã、ãã¼ã«ã«ã®ãããã°ãµã¼ãã¼ã«ãã£ã¦ã¯èããã¬ã¹ãã³ã¹ãé ãå ´åããã£ã。
ããã§、ãµã¼ãã¼ä¸ã«ã¼ããã¤ãã®HTMLãã¡ã¤ã«ãä½ã、HEADã§ã¯ãªãGETãæå®ãã¦ãã®ãã¡ã¤ã«ã®URLãæå®ããããã«ãã。æãããã®æ¹æ³ã¯éæ¿ã ã¨æããã。
ã³ã¡ã³ã
ã³ã¡ã³ããæç¨¿