我知道在 Stackoverflow
上有很多关于这个问题的问答,我读了很多,但是没有一个有效。
我在标题中澄清了 Android WebView
,因为这是最重要的目标,但我希望它也适用于其他设备。我在一个安装有 Intel XDK
的应用上测试了以下代码,在一个安装有 Android 4.4.2
的 SM-G355M
和一个安装有 iOS 9.3.4
的 iPhone 5C
上安装了 Safari;
无论在什么情况下,我都得到了相同的值,true
(有时候即使我连接到互联网,也会得到 false
)。
我尝试过:
navigator.onLine
,它总是给出相同的值。document.addEventListener("online", ...
没有触发ajax
不起作用,无论如何 不会影响服务器?
代码: https://nanilab.com/stackoverflow/webview-internet-connection.php(此链接现已失效)
选项 1:
function option1(){
var isOffline = 'onLine' in navigator && !navigator.onLine,
text = isOffline == true ? ' without connection ' : ' connected ';
$('.option-one span').text(text);
$('.option-one i').text('checked').hide().fadeIn(200);
setTimeout(function(){
option1();
}, 1000);
}
选项2:
window.addEventListener("offline", function(){ $('.option-two span').text(' without connection'); }, false);
window.addEventListener("online", function(){ $('.option-two span').text(' connected'); }, false);
选项3:function option3(){
$.ajax({
url: '/stackoverflow/blank.php',
success: function(data){
print(' connected ');
},
error: function(jqXHR, textStatus, error) {
print(' without connection ');
}
});
function print(text){
$('.option-three span').text(text);
$('.option-three i').text('checked').hide().fadeIn(200);
setTimeout(function(){
option3();
}, 2000);
}
}
使用安装了Intel XDK的SM-G355M手机和Android 4.4.2系统构建的应用程序。
我做错了什么?