大熊君學習html5系列之------Online && Offline(在線狀態檢測)


一,開篇分析

Hi,大家好,給大家拜個晚年!大熊君又和大家見面了,(*^__^*) 嘻嘻……,這系列文章主要是學習Html5相關的知識點,以學習API知識點為入口,由淺入深的引入實例,讓大家一步一步的體會"h5"能夠做什么,以及在實際項目中如何去合理的運用達到使用自如,完美駕馭O(∩_∩)O~,好了,廢話不多說,直接進入今天的主題,

onlineoffline 事件用來監測瀏覽器處於在線或離線狀態。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⊙)哦

(*^__^*) 嘻嘻嘻嘻嘻……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM