Версия для печати темы
forum.0day.community _ Web-программирование _ javascript - обновление страницы через N-секунд без активности
Автор: mzk Aug 3 2019, 19:45
Камрады, нагуглил вот такой код:
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
Забавно, но
"Вы еще здесь?" и кнопки "Да" \ "Нет"
подпадет под
CODE Format
$(document).on('keypress click', function() { intvrefresh() });
и будет не важно, что нажато + как вы думаете имеет ли вообще смысл кнопка "нет"? нет - меня тут нет?
По самой задаче:
вы можете создать модальное окно и отображаеть его по еще одному таймеру но с -5/-10 секунд
Автор: mzk Aug 4 2019, 10:58
Согласен, с кнопкой "Нет" забавно получается
С модальными окнами разобрался - нажимаю на спрятанную кнопку каждые 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
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
(mzk @ Aug 4 2019, 11:58)
Согласен, с кнопкой "Нет" забавно получается
С модальными окнами разобрался - нажимаю на спрятанную кнопку каждые 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 сек... и только в том случае, если кто-то что-то ввел в поле "инпут"
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:59
https://codepen.io/AVZ/full/GVMXNv, но имхо - пилить и пилить.
Автор: mzk Aug 5 2019, 8:28
Да... Получается неплохо, спасибо
Но пилить еще и пилить: после первого нажатия на "Да" оно второй раз уже спрашивает через время
И еще придумать, как отслеживать поле инпута правильно: если пустое, то ничего не делать, если не пустое - спросить
Хм
Автор: YaAllex Aug 5 2019, 8:42
(mzk @ Aug 5 2019, 9:28)
Да... Получается неплохо, спасибо
Но пилить еще и пилить: после первого нажатия на "Да" оно второй раз уже спрашивает через время
И еще придумать, как отслеживать поле инпута правильно: если пустое, то ничего не делать, если не пустое - спросить
Хм
хмм... я выше выкладывал рабочий вариант, там же и код можно забрать; если после первого раза не срабатывает - значит не там поставили создание таймера.
Поле инпута не помню как в jQuery отслеживать( а смотреть влом) , но в ванильном js это document.getElementById(" тут ай-ди инпута ").value -> если значение не пустое то спрашивать "что то там"
Автор: mzk Aug 5 2019, 9:27
Понял, буду ковыряться дальше
Большое спасибо
Invision Power Board
© Invision Power Services