javascript - обновление страницы через N-секунд без активности |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6804-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
javascript - обновление страницы через N-секунд без активности |
mzk |
Aug 3 2019, 19:45
Пост
#1
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Камрады, нагуглил вот такой код:
CODE Format (function(seconds) { var refresh, intvrefresh = function() { clearInterval(refresh); refresh = setTimeout(function() { location.href = location.href; }, seconds * 1000); }; $(document).on('keypress click', function() { intvrefresh() }); intvrefresh(); }(60)); Перезагружает страницу, если нет активности\кликов. Хочется добавить еще красивый вопрос перед обновлением страницы "Вы еще здесь?" и кнопки "Да" \ "Нет" Не хватает знания и опыта... Прошу помощи |
YaAllex |
Aug 3 2019, 21:06
Пост
#2
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
Забавно, но
"Вы еще здесь?" и кнопки "Да" \ "Нет" подпадет под CODE Format $(document).on('keypress click', function() { intvrefresh() }); и будет не важно, что нажато + как вы думаете имеет ли вообще смысл кнопка "нет"? нет - меня тут нет? По самой задаче: вы можете создать модальное окно и отображаеть его по еще одному таймеру но с -5/-10 секунд |
mzk |
Aug 4 2019, 10:58
Пост
#3
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Согласен, с кнопкой "Нет" забавно получается
С модальными окнами разобрался - нажимаю на спрятанную кнопку каждые 60 сек таким образом: CODE Format (function(seconds) { var refresh, intvrefresh = function() { clearInterval(refresh); refresh = setTimeout(function() { location.href = location.href; }, seconds * 1000); }; $(document).on('keypress click', function() { intvrefresh() }); intvrefresh(); $(document).ready(function(){ $('#myBtn').trigger('click'); }); }(60)); Только не получается сделать его вывод по таймеру -10 сек... и только в том случае, если кто-то что-то ввел в поле "инпут" |
YaAllex |
Aug 4 2019, 11:15
Пост
#4
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « CODE Format $(document).ready(function(){ $('#myBtn').trigger('click'); }); вот это либо не доделано, либо не нужно: по любому нажатию на любой элемент(или любую клавишу) у вас должен сработать intvrefresh ( очистка интервала и запуск счетчика заново(60сек) ), т.е. вам нужно что то подобное CODE Format $('#myBtn').on('click', function(){ логика сокрытия модального окна } ); сам таймер для отображения модального окна я бы прописывал в intvrefresh CODE Format var refresh, modal_window_timer, intvrefresh = () => { clearInterval(refresh); clearInterval(madal_window_timer); modal_window_timer = setTimeout(function() { // логика отображения модального окна }, (seconds-10) * 1000); refresh = setTimeout(function() { location.href = location.href; }, seconds * 1000); }; Как то так, но все нужно тестить и проверять... Сообщение отредактировал YaAllex - Aug 4 2019, 11:19 |
YaAllex |
Aug 4 2019, 11:59
Пост
#5
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
Рабочий вариант, но имхо - пилить и пилить.
|
mzk |
Aug 5 2019, 8:28
Пост
#6
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Да... Получается неплохо, спасибо
Но пилить еще и пилить: после первого нажатия на "Да" оно второй раз уже спрашивает через время И еще придумать, как отслеживать поле инпута правильно: если пустое, то ничего не делать, если не пустое - спросить Хм |
YaAllex |
Aug 5 2019, 8:42
Пост
#7
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
Да... Получается неплохо, спасибо Но пилить еще и пилить: после первого нажатия на "Да" оно второй раз уже спрашивает через время И еще придумать, как отслеживать поле инпута правильно: если пустое, то ничего не делать, если не пустое - спросить Хм хмм... я выше выкладывал рабочий вариант, там же и код можно забрать; если после первого раза не срабатывает - значит не там поставили создание таймера. Поле инпута не помню как в jQuery отслеживать( а смотреть влом) , но в ванильном js это document.getElementById(" тут ай-ди инпута ").value -> если значение не пустое то спрашивать "что то там" |
mzk |
Aug 5 2019, 9:27
Пост
#8
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Понял, буду ковыряться дальше
Большое спасибо |
Упрощённая версия | Сейчас: 31st October 2024 - 13:23 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |