2011-06-04 80 views
0

在我的頁面中,我必須從第三方網站讀取天氣信息,然後在用戶連接到互聯網時在div中顯示天氣。如果不是,我會顯示一些本地內容。所以我必須檢查用戶是否有連接。如何檢查用戶是否與互聯網連接

有人說如果用戶可以看到我的頁面,他們必須有連接。然而,它並非一直如此,因爲我們的應用程序可能在本地網絡中運行,所以它們可以獲取我們網站中的資源,但不能獲得互聯網中的資源。

我吼聲使用這種方法:添加以下代碼在頁面的頭:

<head> 
    <script src="http://www.google.com/xxx/jquery.min.xx.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     window.onload=function(){ 
     if($){ 
      //the jquery is loaded,the client muse have the connection to the internet. 
     } else 
      //show local content 
     } 

    </script> 
</head> 

然而,在我們的頁面,我們使用了原型,如果jQuery是加載成功,它可能會導致衝突。

有什麼想法?

注: 我們不需要jQuery的在我們的頁面,在這裏我加載了jQuery只是爲了測試連接,如果可能的話,我可以加載任何其它的庫。

現在,我找到了一個想法:

如果谷歌舉辦的js文件internet.js,只有一行:

var xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx="xx"; 

然後我requset這個文件,以測試 「xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」 variale被定義爲。 :))

+0

您可以使用http://api.jquery.com/jQuery.noConflict/來避免衝突。 – Niklas 2011-06-04 14:27:01

+0

您可以從Google的網站加載原型以及jQuery:http://code.google.com/apis/libraries/devguide.html#prototype。 – Gijs 2011-06-04 14:28:25

+0

但是,如果用戶沒有互聯網連接,用戶將如何打開並加載您的網頁,甚至在CDN上也可以使用該jQuery腳本? :)我認爲你需要重新構建一個問題「如何檢查外部域/服務是否可達?」或者其他的東西。 – BalusC 2011-06-04 14:31:40

回答

1

對於您的用例,最好的方法是檢查您正在加載的天氣內容的錯誤/返回代碼。如果它以某種方式錯誤或無法加載,請顯示您的本地內容。

如果你還是想堅持通過加載JS庫檢查連接,你可以做一些類似以下內容:

<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script> 
<script> 
    if (typeof window.$ !== 'function') { 
     window.noInternet = true; 
     document.write('<script src="http://mylocalserver/prototype.js"></scri' + 'pt>'); 
    } 
</script> 

可能與你的期望的prototype.js

的版本替換1.7.0.0
1

我知道每個JS庫(Mootools/JQuery),當他們做AJAX時,他們也管理不同的返回碼。其中一個代碼是「服務器無法訪問」(找到相關的數字代碼)。您可以檢查返回代碼並對其執行操作。瞭解您使用的特定API,瞭解如何獲取這些代碼。

既然你說有些時候用戶不會有外部連接,我會嘗試從查詢的站點中包含(JSONP)腳本,這又會加載實際內容,而此腳本不處於活動狀態,顯示本地內容。我會做這個使用定時循環的整個過程(setInterval

+0

但是,除非使用代理方式,否則不允許對跨域執行ajax。 – hguser 2011-06-04 14:32:31

+0

@hguser:你剛剛已經給出了自己的答案(注意:如果服務器明確允許它通過正確的頭文件和/或JSONP,則允許跨域請求)。 – BalusC 2011-06-04 14:34:17

+0

@BalusC:在我的文章中,我曾說過,我們的應用程序可能在沒有internate連接的本地網絡中運行。 – hguser 2011-06-04 14:36:15

1

如何檢查jquery是否加載? 這可能幫助.. http://jquery-howto.blogspot.com/2009/03/check-if-jqueryjs-is-loaded.html

注:這裏我們檢查的jQuery 功能被定義或沒有。這是 一種安全的方式來檢查正在加載的jQuery庫 。如果您不是 使用任何其他JavaScript庫 like prototype.js或mootools.js,然後 您還可以檢查$而不是 jQuery。

是否當您更改從if ($)您的支票if (jquery)幫助?