JS实现WiFi认证后公网访问检测功能
作者:闭包旅人时间:2026-10-22 04:53:08浏览:291
本文介绍在WiFi认证开发场景中,如何使用JavaScript检测AC放行状态及公网服务器访问权限。通过封装checkNet函数,结合网络嗅探与异步请求,解决iOS弹窗接入问题,并提供完整的代码实现与调用示例,帮助开发者验证网络连通性。
WiFi认证公网检测背景与目的
该功能代码源自WiFi认证开发过程中的实际需求,具体源码如下所示:
主要目的是检测无线控制器(AC)是否已成功放行,并验证客户端是否能够正常访问公网中的阿里云服务器。
以下是该功能的具体调用方式示例:
网络检测功能调用示例
checkNet().then(function(res) {
if(res) {
//连网成功
}
} else {
//连网失败
}
})
实现该检测功能的核心代码如下:
核心检测代码实现
(function() {
//检测入口
checkNet = function() {
var def = $.Deferred();
xiuNet(null).then(function(res) {
netWork(null).then(function(res) {
if(res) {
def.resolve(true);
} else {
def.resolve(false);
}
})
})
return def.promise();
}
//嗅探网络,解决ios弹框接入网络问题
var checkTime = 2; //嗅探次数
xiuNet = function(def) {
if(def == null) {def = $.Deferred();}
var iframe = document.createElement("iframe");
iframe.style.cssText = "display:none;width:0px;height:0px;";
document.body.appendChild(iframe);
var ua = navigator.userAgent;
if(ua.indexOf("iPhone") != -1 || ua.indexOf("iPod") != -1 ||
ua.indexOf("iPad") != -1) {
iframe.src = "http://www.baidu.com" + "?timestap=" + new Date().getTime();
console.info("嗅探网络----");
if(checkTime > 1) {
checkTime--;
setTimeout(function() {
xiuNet(def)
}, 1000);
} else {
def.resolve(true);
}
} else {
def.resolve(false);
}
return def.promise();
}
//检测网络,是否可以连接公网
var cnetTime = 3; //检测网络次数
netWork = function(def) {
if(def == null) {def = $.Deferred();}
$.ajax({
type: "get",
timeout: 2000,
dataType: "jsonp",
jsonp: "callback",
url: 'https://jktv.tv/shphone/ver.txt',
success: function(data) {},
error: function(xhr) {
$("#ddd").html("status:"+xhr.status)
if(xhr.readyState == 4 && xhr.status == 200) {
def.resolve(true);
} else {
if(cnetTime > 1) {
cnetTime--;
setTimeout(function() {
netWork(def)
}, 200);
} else {
def.resolve(false);
}
}
}
});
return def.promise();
}
})();
上述内容介绍了利用JavaScript检测公网服务器访问状态的方法,希望能对读者有所帮助。如有任何疑问,欢迎留言,小编将及时回复。在此感谢大家对本站的支持!
作者最新文章
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
