2013-05-15 16 views
0

如何設置navigator.onLine知道我停止了本地服務器,它只監聽Wifi或Wire連接,並且無法檢測到本地服務器狀態。navigator.onLine在本地主機上始終爲true?

+1

我認爲這意味着網絡是否啓動,而不是目標服務器是否在監聽,所以它不是一回事。你可以發送ping類型的請求到你的服務器,看看是否有時間?爲什麼你要停止服務器並進行測試呢? – Rup

+1

你不能通過頁面URL('location.href')檢測localhost嗎?前面的例子,我自己在本地託管的網站有'.loc'頂級域名。 –

+0

@Rup這是爲了測試目的,看看我的應用程序可以在服務器沒有響應時如何表現(離線模式) @ŠimeVidas不小心?我只是運行它們作爲'localhost:8000' – Abdelouahab

回答

1

據我所知,navigator.onLine的價值實際上取決於瀏覽器。例如,在IE的情況下,它會返回它的狀態(無論是否處於離線模式)。它不會返回基於服務器可用性或類似值的值,因爲默認情況下,一旦數據傳輸完成,與服務器的連接就會關閉。

如果你想讓你的網頁知道服務器是否仍然可以到達,你應該選擇在後臺發生一些Ajax請求。如果超時,服務器不在(斷開連接,網絡連接不良等)。

+0

所以'navigator.onLine'會看到什麼是'loopback'而不是什麼是down? (層) – Abdelouahab

+1

不,它很可能根本不會檢查您的(服務器)連接。它只是返回瀏覽器的通用狀態(「它是否在離線模式下運行?」而不是「它可以到達互聯網嗎?」)。 – Mario

+0

啊,我認爲它可以改變端口號... – Abdelouahab