DDR爱好者之家 Design By 杰米
本文实例讲述了Javascript实现网络监测的方法。分享给大家供大家参考。具体实现方法如下:
该代码可监测网络是否连接及网速的快慢状态。
(function(){
var network = function(){
var monitor = this;
/**
* @param {Funcation} speedInterval
*/
var speedInterval = null;
/**
* @param {Function} networkInterval
*/
var networkInterval = null;
/**
* @param {Function} reNetworkInterval
*/
var reNetworkInterval = null;
var time = 5000;
/**
* 获取网络连接状态
*/
var getConnectState = function(){
return navigator.onLine "网速中断");
window.clearInterval(reNetworkInterval);
reNetworkInterval = null;
endSpeed();
endNetwork();
window.setTimeout(function(){
reNetworkInterval = window.setInterval(function(){
if (getConnectState() == 1) {
window.clearInterval(reNetworkInterval);
reNetworkInterval = null;
startSpeed();
startNetwork();
} else {
window.clearInterval(reNetworkInterval);
reNetworkInterval = null;
disconnect();
}
}, time);
}, 2 * time);
};
/**
* 网络速度
*/
var speed = {
/**
* 网速过慢
*/
bad : function(){
// TODO ...
console.log("网速过慢");
window.setTimeout(function(){
if(getConnectState() == 1) {
window.clearInterval(networkInterval);
networkInterval = null;
startSpeed();
} else {
disconnect();
}
}, 2 * time);
},
/**
* 网速中等
*/
medium : function(){
// TODO ...
console.log("网速中等");
},
/**
* 网速极佳
*/
great : function(){
// TODO ...
console.log("网速极佳");
}
};
/**
* 开启速度监测
* @private
*/
var startSpeed = function(){
window.clearInterval(speedInterval);
speedInterval = null;
if(getConnectState() == 1) {
speedInterval = window.setInterval(function(){
var start = new Date().getTime();
if (getConnectState() == 1) {
var img = document.getElementById("networkSpeedImage");
if (!!!img) {
img = document.createElement("IMG");
img.id = "networkSpeedImage";
img.style.display = "none";
document.body.appendChild(img);
}
try {
img.src = "http://www.baidu.com/img/baidu_jgylogo3.gif" + new Date().getTime();
img.onload = function(){
var end = new Date().getTime();
var delta = end - start;
if (delta > 200) {
speed.bad();
} else if (delta > 100) {
speed.medium();
} else {
speed.great();
}
};
} catch(e){
speed.bad();
}
} else {
// TODO 网络断开
disconnect();
}
}, time);
}else {
// TODO 网络断开
disconnect();
}
};
/**
* 停止速度监测
* @private
*/
var endSpeed = function(){
window.clearInterval(speedInterval);
speedInterval = null;
};
/**
* 开启网络连接监测
* @private
*/
var startNetwork = function(){
if (getConnectState() == 1) {
networkInterval = window.setInterval(function(){
if (getConnectState() == 0) {
disconnect();
}
}, time);
} else{
disconnect();
}
};
/**
* 结束网络连接监测
* @private
*/
var endNetwork = function(){
window.clearInterval(networkInterval);
networkInterval = null;
};
/**
* 网络监控开始
*/
this.start = function(){
startNetwork();
startSpeed();
};
/**
* 停止网络监控
*/
this.stop = function(){
endSpeed();
endNetwork();
};
};
window.network = new network();
}).call(this);
// 调用的时候,直接调用network.start();
希望本文所述对大家的javascript程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2025年11月05日
2025年11月05日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]