首先,在项目中遇到一个问题,就是在点击一个a标签的时候判断电脑有没有网,如果有网就跳转页面,没网就弹出一个提示消息
在百度上查了一番,发现好多种方法。下面一一进行列举:
// 1.点击某一事件时判断有没有连网(看了好多说兼容IE8,但是我测了好多遍,就是不兼容IE8,如果做的项目不用兼容IE8,用这个方法还是蛮好的)
if (navigator.onLine) {
console.log("有网");
} else {
console.log("没网");
}
为了兼容IE8,我想了一个办法,网上查找了js判断浏览器的方法,判断如果是ie8的时候,通过ajax请求来判断有没有网,其他情况下用1中的方法判断,下面是项目中的代码
$("#infoBox>p>span>a").each(function(){
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
//this是上面获取的a标签
if ($(this).text()=="哈哈哈"){
$(this).attr("href","javascript:void(0)");
$(this).on("click",function () {
if(isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(fIEVersion == 8) {
$.ajax({
type:'post',
url:"",
data: {},
dataType:"json",
success:function () {
location.href = index.html;
},
error:function () {
$('#dialog').show();
setTimeout(function() {
$('#dialog').hide();
}, 3000);
}
})
}
}
else{
if (navigator.onLine) {
// 有网工作
location.href = index.html;
} else {
//离线工作
$('#dialog').show();
setTimeout(function() {
$('#dialog').hide();
}, 3000);
}
}
})
}
});
// 2.网络连网和断网切换时触发的事件(一般只有连网和断网的时候才会触发的事件)
var EventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
}
};
EventUtil.addHandler(window, "online", function () {
alert("Online");
});
EventUtil.addHandler(window, "offline", function () {
alert("Offline");
});
if(window.navigator.onLine==true) {
alert("首次 -- 已连接");
}else {
alert("首次 -- 未连接");
}
window.addEventListener("online", online, false);
window.addEventListener("offline", offline, false);
function online() { alert("重新连接"); }
function offline() { alert("连接断开"); }
//3.通过图片是否加载成功来判断有没有网,如果加载成功,就有网,不成功就没网,为了安全起见,不推荐使用这个(通过点击事件显示有没有网)
<img id="img-test" style="display:none;" onerror="getImgError()"/>
<button id="btn-test">check status</button>
$("#btn-test").click(function(){
var i = new Image();
// console.log(i);
i.src = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png?t=' + Date.parse(new Date());
i.onload = function() {
alert('有网');
};
i.onerror = function() {
alert('没网');
};
});
//4. 和3差不多,页面加载的时候显示有没有网
var i = new Image();
console.log(i);
i.src = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png?t=' + Date.parse(new Date());
i.onload = function() {
alert('有网');
};
i.onerror = function() {
alert('没网');
};
//5.通过ajax请求判断有没有网,如果ajax请求写的都是对的,那么请求成功既有网,请求失败既没网