Я знаю, что в Stackoverflow
есть много вопросов и ответов, я читал их много, но никто из них не работает.
Я пояснил в заголовке Android WebView
, потому что это самая важная цель, но я хотел бы, чтобы это работало и на других устройствах. Я протестировал следующий код в приложении , построенном с Intel XDK
, установленном на SM-G355M
с Android 4.4.2
и на Safari
, установленном на iPhone 5C
с iOS 9.3.4
;
Все, что я получаю в обоих случаях, это одно и то же значение, 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 with Android 4.4.2
Что я делаю неправильно?