浏览器在线或离线状态检测

firefox3和IE8均提供了离线(offline)和在线(online)事件,参考:
[url]https://developer.mozilla.org/En/Online_and_offline_events[/url]
[url]http://msdn.microsoft.com/en-us/library/cc304129(VS.85).aspx[/url]
据传,webkit也支持offline事件,但我没有找到相关资料。

除此以外,有没有跨浏览器的检测手段哪?比如在IE6下面如何检测浏览器已经离线,web应用需要转入离线应用状态(比如使用google gear)。

基本思路有一个:定时轮训。网络上搜索一番后发现dojo有这方面的插件:dojox.off.offline--[url]http://www.dojotoolkit.org/book/dojo-book-0-9/part-5-dojox/dojo-offline/using-dojo-offline[/url]。 就是每隔5秒钟发一个ajax请求(向一个非常小的文本文件发请求),在超时回调里判断客户端浏览器已经离线。

_startNetworkThread: function(){
if(!this.doNetChecking){
return;
}
window.setInterval(dojo.hitch(this, function(){
var d = dojo.xhrGet({
url: this._getAvailabilityURL(),
handleAs: "text",
timeout: this.NET_CHECK * 1000,
error: dojo.hitch(this,
function(err){
if(this.isOnline){
this.isOnline = false;
try{
if(typeof d.ioArgs.xhr.abort == "function"){
d.ioArgs.xhr.abort();
}
}catch(e){}
dojox.off.sync.isSyncing = false;
this.onNetwork("offline");
}
}
),
load: dojo.hitch(this,
function(data){
if(!this.isOnline){
this.isOnline = true;
this.onNetwork("online");
}
}
)
});

}), this.NET_CHECK * 1000);
}


应该还有其他检测手段,比如借助于flash、Silverlight、检测图片(onerror事件)等。

刚才又搜索到一个Jquery的方案:
[url]http://jamazon.co.uk/web/2008/06/17/publish-subscribe-with-jquery/[/url]

$.networkDetection = function(url,interval){
var url = url;
var interval = interval;
online = false;
this.StartPolling = function(){
this.StopPolling();
this.timer = setInterval(poll, interval);
};
this.StopPolling = function(){
clearInterval(this.timer);
};
this.setPollInterval= function(i) {
interval = i;
};
this.getOnlineStatus = function(){
return online;
};
function poll() {
$.ajax({
type: "POST",
url: url,
dataType: "text",
error: function(){
online = false;
$(document).trigger('status.networkDetection',[false]);
},
success: function(){
online = true;
$(document).trigger(’status.networkDetection’,[true]);
}
});
};
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值