Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2020, 22:40
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

Проверить, подключен ли пользователь к Интернету
Доброго времени суток! Набросал код, который должен проверять каждые 3 секунды, в сети ли пользователь. Пока он проверяет бесконечное количество раз, подключены мы к Интернету или нет. (вернее, должен, но браузер тупит). Как сделать паузы между выполнением while, например, на 10 секунд?
<!DOCTYPE html>
<html>
<head>
<title>Internet Connection</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body onload="">
<script>
while (true) { setTimeout(checkState, 3000); }
function checkState() {
if(navigator.onLine) {
alert("Вы подключены к интернету!")
} else {
alert("Похоже, вы потеряли соединение с Интрнетом!")
}
}
</script>
</body>

</html>

Последний раз редактировалось ABitOfJS, 02.12.2020 в 22:54.
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2020, 22:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,702

Это не браузер тупит
Вы в бесконечном цикле посnоянно вызываете setTimeot не дожидаясь когда она закончится.
За 3 сек она вызовется 100500 раз.

Сообщение от ABitOfJS
ак сделать паузы между выполнением while, например, на 10 секунд?
Так чего вы хотите? Через 10 сек вызывать или через 3?
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2020, 23:39
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,702

Так попробуйте
<!DOCTYPE html>
<html>
<head>
<title>Internet Connection</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body onload="">
<script>
const testInet = async (ty=10000, tn=3000, n=25) =>{
	const delay = (n) => {
		return new Promise (res => {
			let tm = setTimeout (() => res(tm), n);
		})
	}
	const testNo = async (n) => {
		while (n--) {
			alert (`Проверяем связь. Осталось ${n} проверок `)
			if(navigator.onLine) return true
			await delay(tn)
		}
		return false
	}
	
	while (true) {
		if(! navigator.onLine) {
			alert ('Похоже, вы потеряли соединение с Интрнетом!')
			let ans = await testNo(n)
			if (!ans) {
				alert ('Похоже, это навсегда!!!')
				break;
			}
			alert ('Связь восстановлена!')
		}
		await delay(ty)
	}
}

testInet(10000, 3000, 50);
</script>
</body>
 
</html>

Пока связь есть, проверяет каждые 10 сек.
Когда связь потеряна начинает проверять каждые 3 сек, но не более 50 раз

Сам не проверял. Что бы инет отключить провода выдергивать придется.

Последний раз редактировалось voraa, 02.12.2020 в 23:45.
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2020, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ABitOfJS,
<!DOCTYPE html>
<html>
<head>
<title>Internet Connection</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
document.addEventListener( "DOMContentLoaded" , function() {
const checkState = () => {
let text = navigator.onLine ? "Вы подключены к интернету!" : "Похоже, вы потеряли соединение с Интрнетом!"
attention.textContent = text;
setTimeout(checkState, 3000)
}
checkState()
});
</script>
</head>
<body>
<div id="attention"></div>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить подключение к интернету biryukovm AJAX и COMET 1 17.11.2017 16:10
Как проверить подключен ли скрипт и если нет подключить из другого места? An1984tonn Элементы интерфейса 9 10.06.2017 16:19
Как проверить авторизован ли пользователь в соц сетях AnteFil Элементы интерфейса 3 28.11.2016 03:58
Как проверить поставил ли лайк пользователь сообществу в facebook? Hiromant Общие вопросы Javascript 0 02.06.2016 11:41
Как проверить откуда пришел пользователь! toxiz77 Общие вопросы Javascript 2 27.10.2009 20:55