javascript判斷機器是否連網的2種方法

來源:互聯網
上載者:User

在很多情境下,只有機器已經連網以後,web應用才能啟動。如果沒有連網,就會提示錯誤。、
但是機器有時候要重啟。 如果機器重啟後,立刻啟動web應用的話,可能,機器上的網路服務還沒有準備好。

特別是windows7,啟動網路服務需要好幾秒,這個時候怎麼辦呢?
之前嘗試過幾種方法:
比如 通過ping來判斷, 但是ping需要有一個非原生ip地址。 這個不是很通用
比如監控某個連接埠是否已經被佔用,但是光連接埠佔用,也不能說明網路已經啟動了。
另一個方面,如果是web應用的話,最好是在前端判斷,比如用javascript。
網上也有人寫 javascript 的ping的類比效果。但確實有些麻煩。
怎麼辦呢,關鍵的時候,還是html5能給出好的解決方案:

方法一:
navigator.onLine
複製代碼 代碼如下:
if (navigator.onLine)
{ //正常工作}
else { //執行離線狀態時的任務}

這個html5的 navigator的新特性可以很簡單幫我們搞定
HTML5為此定義了一個navigator.onLine屬性,這個屬性值為true表示裝置能上網,值為false表示裝置離線。
當然不同的瀏覽器,對這個的支援還不太一樣
IE6+和Safari 5+支援的比較好
Firefox 3+和支援navigator.onLine屬性,但你必須手工選中功能表項目“檔案-Web開發人員(設定)-離線工作”才能讓瀏覽器正常的工作。
Chrome需要12以上。

方法二:
當然,如果想支援的更相容,可以使用如下2個事件:online和offline。當網路從離線變為線上或者從線上變為離線時,分別觸發這兩個事件。這兩個事件在window對象上觸發。
為了檢測應用是否離線,在頁面載入後,最好先通過navigator.onLine取得初始的狀態。然後,就是通過上述兩個事件來確定網路連接狀態是否變化。當上述事件觸發式,navigator.onLine屬性的值也會改變,不過必須要手工輪詢這個屬性才能檢測到網路狀態的變化。
複製代碼 代碼如下:
var EventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
}
};
EventUtil.addHandler(window, "online", function () {
alert("Online");
});
EventUtil.addHandler(window, "offline", function () {
alert("Offline");
});

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.