2012-05-08 143 views
2

目前,我正在製作一些緩存的iPhone應用程序,其中包含一些需要互聯網的功能以及其他不需要的功能。我想知道如何使用JavaScript檢測互聯網連接,使某些頁面顯示「無互聯網連接」文本,而其他頁面正常工作。使用JavaScript檢測互聯網連接

+0

我不知道這是否有助於iPhone,但有一個類似於這個網站上的帖子:http://stackoverflow.com/questions/2384167/check-if-internet-connection-exists-with-javascript – lakam99

回答

8

在HTML5中,你可以使用:

navigator.onLine 

檢測因特網連接。

現場演示:http://jsfiddle.net/DerekL/fHQK4/

+1

這是我見過的最乾淨的解決方案,謝謝! – alchemication

+0

最乾淨的解決方案,對。可惜,那**它不工作**!根據[this](https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.onLine#Browser_compatibility),[this](http://stackoverflow.com/a/2384227/1469208)和[this](http://stackoverflow.com/a/4813406/1469208),'navigator.onLine'雖然是HTML5的一部分,但僅在基於Chrome和WebKit的瀏覽器中才能正確支持** !其他瀏覽器在「脫機工作」模式處於禁用狀態時返回「true」,或者返回「true」,並且在啓用時返回「false」,而與實際連接無關。 – trejder

+0

我使用[簡單的jsFiddle示例](http://jsfiddle.net/Gajotres/VXWGG/1/),我發現(不是我的),我非常滿意這一點。它在Chrome中運行良好,在Firefox中完全失敗(總是返回'true',因爲我沒有啓用'脫機工作')。我不知道,如果這是在IE中工作,因爲......它像一個可憐的乞丐一樣掛在任何jsFiddle頁面上(蹩腳,蹩腳的瀏覽器)! :]如果您想要進行可靠的連接檢查,則必須執行XHR請求並檢查是否失敗。您會在鏈接中找到很多示例,我在第一條評論中提供了這些示例。 – trejder

0

你可以做一個iframe,設置src到谷歌。如果它在幾秒鐘內不觸發onload,他們可能沒有互聯網。

+1

如果用戶的互聯網速度很慢並且需要一分鐘才能加載,該怎麼辦? –

+1

@Derek,這的確如此,但互聯網連接並沒有多少希望,這需要花費幾秒鐘才能從世界上最快的服務器上加載約600字節。也可能沒有互聯網。 – mowwwalker