javascript判斷機(jī)器是否聯(lián)網(wǎng)的2種方法
更新時間:2013年08月09日 16:12:39 作者:
只有機(jī)器已經(jīng)聯(lián)網(wǎng)以后,web應(yīng)用才能啟動,下面使用javascript判斷機(jī)器是否聯(lián)網(wǎng),具體判斷代碼如下,有此需求的朋友可以參考下
在很多場景下,只有機(jī)器已經(jīng)聯(lián)網(wǎng)以后,web應(yīng)用才能啟動。如果沒有聯(lián)網(wǎng),就會提示錯誤。、
但是機(jī)器有時候要重啟。 如果機(jī)器重啟后,立刻啟動web應(yīng)用的話,可能,機(jī)器上的網(wǎng)絡(luò)服務(wù)還沒有準(zhǔn)備好。
特別是windows7,啟動網(wǎng)絡(luò)服務(wù)需要好幾秒,這個時候怎么辦呢?
之前嘗試過幾種方法:
比如 通過ping來判斷, 但是ping需要有一個非本機(jī)的ip地址。 這個不是很通用
比如監(jiān)控某個端口是否已經(jīng)被占用,但是光端口占用,也不能說明網(wǎng)絡(luò)已經(jīng)啟動了。
另一個方面,如果是web應(yīng)用的話,最好是在前端判斷,比如用javascript。
網(wǎng)上也有人寫 javascript 的ping的模擬效果。但確實有些麻煩。
怎么辦呢,關(guān)鍵的時候,還是html5能給出好的解決方法:
方法一:
navigator.onLine
if (navigator.onLine)
{ //正常工作}
else { //執(zhí)行離線狀態(tài)時的任務(wù)}
這個html5的 navigator的新特性可以很簡單幫我們搞定
HTML5為此定義了一個navigator.onLine屬性,這個屬性值為true表示設(shè)備能上網(wǎng),值為false表示設(shè)備離線。
當(dāng)然不同的瀏覽器,對這個的支持還不太一樣
IE6+和Safari 5+支持的比較好
Firefox 3+和支持navigator.onLine屬性,但你必須手工選中菜單項“文件-Web開發(fā)人員(設(shè)置)-脫機(jī)工作”才能讓瀏覽器正常的工作。
Chrome需要12以上。
方法二:
當(dāng)然,如果想支持的更兼容,可以使用如下2個事件:online和offline。當(dāng)網(wǎng)絡(luò)從離線變?yōu)樵诰€或者從在線變?yōu)殡x線時,分別觸發(fā)這兩個事件。這兩個事件在window對象上觸發(fā)。
為了檢測應(yīng)用是否離線,在頁面加載后,最好先通過navigator.onLine取得初始的狀態(tài)。然后,就是通過上述兩個事件來確定網(wǎng)絡(luò)連接狀態(tài)是否變化。當(dāng)上述事件觸發(fā)式,navigator.onLine屬性的值也會改變,不過必須要手工輪詢這個屬性才能檢測到網(wǎng)絡(luò)狀態(tài)的變化。
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");
});
但是機(jī)器有時候要重啟。 如果機(jī)器重啟后,立刻啟動web應(yīng)用的話,可能,機(jī)器上的網(wǎng)絡(luò)服務(wù)還沒有準(zhǔn)備好。
特別是windows7,啟動網(wǎng)絡(luò)服務(wù)需要好幾秒,這個時候怎么辦呢?
之前嘗試過幾種方法:
比如 通過ping來判斷, 但是ping需要有一個非本機(jī)的ip地址。 這個不是很通用
比如監(jiān)控某個端口是否已經(jīng)被占用,但是光端口占用,也不能說明網(wǎng)絡(luò)已經(jīng)啟動了。
另一個方面,如果是web應(yīng)用的話,最好是在前端判斷,比如用javascript。
網(wǎng)上也有人寫 javascript 的ping的模擬效果。但確實有些麻煩。
怎么辦呢,關(guān)鍵的時候,還是html5能給出好的解決方法:
方法一:
navigator.onLine
復(fù)制代碼 代碼如下:
if (navigator.onLine)
{ //正常工作}
else { //執(zhí)行離線狀態(tài)時的任務(wù)}
這個html5的 navigator的新特性可以很簡單幫我們搞定
HTML5為此定義了一個navigator.onLine屬性,這個屬性值為true表示設(shè)備能上網(wǎng),值為false表示設(shè)備離線。
當(dāng)然不同的瀏覽器,對這個的支持還不太一樣
IE6+和Safari 5+支持的比較好
Firefox 3+和支持navigator.onLine屬性,但你必須手工選中菜單項“文件-Web開發(fā)人員(設(shè)置)-脫機(jī)工作”才能讓瀏覽器正常的工作。
Chrome需要12以上。
方法二:
當(dāng)然,如果想支持的更兼容,可以使用如下2個事件:online和offline。當(dāng)網(wǎng)絡(luò)從離線變?yōu)樵诰€或者從在線變?yōu)殡x線時,分別觸發(fā)這兩個事件。這兩個事件在window對象上觸發(fā)。
為了檢測應(yīng)用是否離線,在頁面加載后,最好先通過navigator.onLine取得初始的狀態(tài)。然后,就是通過上述兩個事件來確定網(wǎng)絡(luò)連接狀態(tài)是否變化。當(dāng)上述事件觸發(fā)式,navigator.onLine屬性的值也會改變,不過必須要手工輪詢這個屬性才能檢測到網(wǎng)絡(luò)狀態(tài)的變化。
復(fù)制代碼 代碼如下:
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");
});
您可能感興趣的文章:
- js實現(xiàn)雙向鏈表互聯(lián)網(wǎng)機(jī)頂盒實戰(zhàn)應(yīng)用實現(xiàn)
- android判斷phonegap是否聯(lián)網(wǎng)且加載super.loadUrl網(wǎng)址
- javascript檢測是否聯(lián)網(wǎng)的實現(xiàn)代碼
- Android中判斷手機(jī)是否聯(lián)網(wǎng)實例
- php銀聯(lián)網(wǎng)頁支付實現(xiàn)方法
- 通過JS判斷聯(lián)網(wǎng)類型和連接狀態(tài)的實現(xiàn)代碼
- Android中判斷是否聯(lián)網(wǎng)實現(xiàn)代碼
- Android互聯(lián)網(wǎng)訪問圖片并在客戶端顯示的方法
- Android sdcard實現(xiàn)圖片存儲 、聯(lián)網(wǎng)下載
- 如何判斷軟件程序是否聯(lián)網(wǎng) 聯(lián)網(wǎng)狀態(tài)提示信息Android實現(xiàn)
相關(guān)文章
使用javascript函數(shù)編寫簡單銀行取錢存錢流程
本文通過實例代碼給大家講解了使用javascript函數(shù)編寫簡單銀行取錢存錢流程,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-05-05微信小程序setInterval定時函數(shù)新手使用的超詳細(xì)教程
平時開發(fā)中為實現(xiàn)倒計時效果可以使用setInterval即可,下面這篇文章主要給大家介紹了關(guān)于微信小程序setInterval定時函數(shù)新手使用的超詳細(xì)教程,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08javascript進(jìn)行數(shù)組追加方法小結(jié)
javascript中給數(shù)組加元素是一個非常簡單的問題,javascript本身就提供了大量這類函數(shù),我們可以使用js自帶函數(shù)快速給數(shù)組增加元素了,本文就javascript進(jìn)行數(shù)組追加的方法做出如下小結(jié)。2014-06-06一個JavaScript遞歸實現(xiàn)反轉(zhuǎn)數(shù)組字符串的實例
這篇文章主要介紹了一個JavaScript遞歸實現(xiàn)反轉(zhuǎn)數(shù)組字符串的實例,很不錯,非常適合新手朋友們2014-10-10JavaScript獲取當(dāng)前窗口內(nèi)的寬度和高度匯總
這篇文章主要介紹了JavaScript獲取當(dāng)前窗口內(nèi)的寬度和高度匯總的相關(guān)資料,需要的朋友可以參考下2023-02-02JS面向?qū)ο缶幊獭狤S6 中class的繼承用法詳解
這篇文章主要介紹了JS面向?qū)ο缶幊獭狤S6 中class的繼承用法,結(jié)合實例形式詳細(xì)分析了ES6中class繼承的相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下2020-03-03使用javascript實現(xiàn)ListBox左右全選,單選,多選,全請
使用javascript實現(xiàn)ListBox左右全選,單選,多選,全請。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11