2016-09-23 14 views
0

我正在創建一個基於Web的應用程序,該程序可以脫機工作,也可以在線工作。因此,我需要檢查互聯網是否正常工作。目前我使用JavaScript中navigator.onLine的Internet連接狀態無法正常工作,並且在未連接互聯網時顯示錯誤狀態

navigator.onLine

。我試過類似的東西;

if (navigator.onLine) { 
    // Internet is connected 
    // work in online Mode 
} 
else{ 
    // Internet is disconnected 
    // work in offline mode 
} 

它的工作正常,但有時它會給出錯誤的狀態。我注意到,當我更改我的IP和/或網關並將它們設置錯誤以斷開我的互聯網訪問。更改後沒有訪問任何網頁我的ipnavigator.onLine顯示在線狀態。我重新啓動了我的系統,清除了瀏覽器緩存,但我面臨同樣的問題。我也讀過人們面臨的同樣的問題,但沒有得到很好的解決方案。我該如何解決這個問題!有什麼建議麼!

回答

1

正如在文檔中提到了這一功能:

在Chrome和Safari,如果瀏覽器無法連接到局域網(LAN)或路由器,它處於脫機狀態;所有其他條件返回true。因此,儘管您可以假設瀏覽器在返回錯誤值時處於脫機狀態,但您不能認爲真正的值必然意味着瀏覽器可以訪問互聯網。您可能會得到誤報,例如在計算機正在運行具有始終「連接」的虛擬以太網適配器的虛擬化軟件的情況下。因此,如果你真的想確定瀏覽器的在線狀態,就應該開發更多的用於檢查...

https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine

這意味着你不能依靠這個功能來確定連接。現在,這取決於你的應用程序 - 你可以做什麼。一種方法是讓心跳包發送到服務器上的某個REST接口。