2012-07-18 51 views
1

是活動我有檢查,如果用戶有一個有效的互聯網連接下面的聽衆:檢查,如果互聯網的使用jQuery

$(function() { 
$(window).bind(
     "online offline", 
     function(event){ 
      console.log("-------------------window bind------------------------------"); 
      if(hasInternets()){ 
       console.log("window bind online---------------------------------------------"); 
       sendAllPendingData(); 
      }else { 
       console.log("window bind offline--------------------------------------------"); 
      } 
     } 
     ); 


}); 

function hasInternets() { 
    console.log("hasInternets: " + window.location.href.split("?")[0] + "?" + Math.random()); 
    var s = $.ajax({ 
     type: "HEAD", 
     url: window.location.href.split("?")[0] + "?" + Math.random(), 
     async: false 
    }).status; 
     console.log("s: " +s); 
    //thx http://www.louisremi.com/2011/04/22/navigator-online-alternative-serverreachable/ 
    return s >= 200 && s < 300 || s === 304; 
} 

它工作正常,在我的筆記本電腦。我不確定它是否可以在其他機器和設備上正常工作。我不懂這個東西。所以,如果有人能提供建議,我們將非常感激。順便說一下,在我進行研究的同時,我偶然發現了jQuery插件上的TrueOnline,有沒有人試過這個? http://archive.plugins.jquery.com/project/trueonline

謝謝。

+0

可能重複[檢查Internet連接是否存在Javascript?](http://stackoverflow.com/questions/2384167/check-if-internet-connection-exists-with-javascript)<可能有幫助> **' :) ** – 2012-07-18 09:05:30

+0

嗨,tats。謝謝回覆。但是恐怕我需要一個用於離線/在線事件的監聽器,而不僅僅是用於在頁面加載時檢查用戶是否在線/離線。 – lorraine 2012-07-18 15:23:29

回答

0

online & offline事件是HTML5的一部分,因此在舊版瀏覽器中無法使用。

爲了支持這些瀏覽器,您應該定期啓動hasInternets()(例如,通過setInterval),並相應地響應響應是否成功。

您也可能知道window.navigator.onLine,但請注意incredible amount of browser variations/ bugs;所以這是我試圖避免的財產。

+0

嗨,馬特。謝謝回覆。是的,我已閱讀navigator.onLine的東西,這是不可靠的,所以我嘗試使用上述代碼,阿賈克斯告訴我,如果我的域是可訪問的(這意味着我有互聯網連接)。你可以發佈一些代碼,也可以指向我有關hasInternets()連續調用的教程。謝謝 – lorraine 2012-07-18 15:22:11