一,開篇分析
Hi,大家好,給大家拜個晚年!大熊君又和大家見面了,(*^__^*) 嘻嘻……,這系列文章主要是學習Html5相關的知識點,以學習API知識點為入口,由淺入深的引入實例,讓大家一步一步的體會"h5"能夠做什么,以及在實際項目中如何去合理的運用達到使用自如,完美駕馭O(∩_∩)O~,好了,廢話不多說,直接進入今天的主題,
online,offline 事件用來監測瀏覽器處於在線或離線狀態。HTML5提出的離線存儲,web應用程序可以在不連接互聯網的情況下滿足用戶的部分需求,比如在線記事本。當沒有連接互聯網,也就是offline的時候,我們可以把用戶的數據保存在本地,當用戶連接到互聯網的時候,也就是online,我們可以把數據發送到服務器。
二,栗子說明
一個屬性,兩個事件
(1),屬性:window.navigator.onLine
navigator.onLine 屬性表示當前是否在線。如果為 true, 表示在線;如果為 false, 表示離線。當網絡狀態發生變化時,navigator.onLine 的值也隨之變化。開發者可以通過讀取它的值獲取網絡狀態。
if (navigator.onLine) {
alert('online');
} else {
alert('offline');
}
(2),兩個事件
window.addEventListener('online', function(){});
window.addEventListener('offline', function(){});
當開發離線應用時,通過 navigator.onLine 獲取網絡狀態通常是不夠的。開發者還需要在網絡狀態發生變化時立刻得到通知,因此 HTML5 還提供了 online/offline 事件。當在線 / 離線狀態切換時,online/offline 事件將觸發在 body 元素上,並且沿着 document.body,document 和 window 的順序冒泡。因此,開發者可以通過監聽它們的 online/offline 事件來獲悉網絡狀態。
下面給一個我寫過的完整例子,如下代碼:
(function(win){
function BBNetwork(callback){
this.navigator = win.navigator ;
this.callback = callback ;
this._init() ;
} ;
var bbNetworkProto = BBNetwork.prototype ;
bbNetworkProto._init = function(){
var that = this ;
win.addEventListener("online",function(){
that._fnNetworkHandler() ;
},true) ;
win.addEventListener("offline",function(){
that._fnNetworkHandler() ;
},true) ;
} ;
bbNetworkProto._fnNetworkHandler = function(){
this.callback && this.callback(this.navigator.onLine ? "online" : "offline") ;
} ;
bbNetworkProto.isOnline = function(){
return this.navigator.onLine ;
} ;
win.BBNetwork = BBNetwork ;
})(window) ;
$(function(){
var el = $("#h5Native") ;
var bbNetwork = new BBNetwork(function(status){
var tipMsg = "" ;
if("online" != status){
el.html("目前處於離線狀態~~~~(>_<)~~~~ ").show() ;
}
else{
el.hide() ;
}
}) ;
if(!bbNetwork.isOnline()){
el.html("目前處於離線狀態~~~~(>_<)~~~~ ").show() ;
}
}) ;
運行效果(首先斷開網絡
)

支持情況:
桌面應用

移動應用

三,實例分享
(1),html
1 <body onload="loaded()"> 2 <div id="status"><p id="state"/></div> 3 <div id="log"/> 4 </body>
(2),css
1 #status { height:200px; text-align:center; } 2 #status.online { background:green; } 3 #status.offline { background:red; } 4 #log { background:yellow; border:2px solid black; white-space:pre; max-height:200px; overflow:auto; }
(3),js
1 function updateOnlineStatus(msg) { 2 var status = document.getElementById("status"); 3 var condition = navigator.onLine ? "ONLINE" : "OFFLINE"; 4 status.setAttribute("class", condition); 5 var state = document.getElementById("state"); 6 state.innerHTML = condition; 7 var log = document.getElementById("log"); 8 log.appendChild(document.createTextNode("Event: " + msg + "; status=" + condition + "\n")); 9 } 10 function loaded() { 11 updateOnlineStatus("load"); 12 document.body.addEventListener("offline", function () { updateOnlineStatus("offline") }, false); 13 document.body.addEventListener("online", function () { updateOnlineStatus("online") }, false); 14 }
運行結果:

(四),最后總結
(1),理解Online AND Offline Api的使用方式以及具體實例中使用的目的是為了解決哪些問題。
(2),理解這句話(當開發離線應用時,通過 navigator.onLine 獲取網絡狀態通常是不夠的。開發者還需要在網絡狀態發生變化時立刻得到通知,因此 HTML5 還提供了 online/offline 事件。當在線 / 離線狀態切換時,online/offline 事件將觸發在 body 元素上,並且沿着 document.body,document 和 window 的順序冒泡。因此,開發者可以通過監聽它們的 online/offline 事件來獲悉網絡狀態。)。
(3),熟練使用以上API,不斷實踐與重構文章中的栗子。
哈哈哈,本篇結束,未完待續,希望和大家多多交流夠溝通,共同進步。。。。。。呼呼呼……(*^__^*) , 如果您覺得有收獲,點個推薦(⊙o⊙)哦
(*^__^*) 嘻嘻嘻嘻嘻……
