Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

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));

Перезагружает страницу, если нет активности\кликов.

Хочется добавить еще красивый вопрос перед обновлением страницы "Вы еще здесь?" и кнопки "Да" \ "Нет"

Не хватает знания и опыта... Прошу помощи geek.png

Автор: YaAllex Aug 3 2019, 21:06

Забавно, но

"Вы еще здесь?" и кнопки "Да" \ "Нет"

подпадет под
CODE Format

$(document).on('keypress click', function() { intvrefresh()  });

и будет не важно, что нажато + как вы думаете имеет ли вообще смысл кнопка "нет"? нет - меня тут нет? eyes_open.png



По самой задаче:
вы можете создать модальное окно и отображаеть его по еще одному таймеру но с -5/-10 секунд

Автор: mzk Aug 4 2019, 10:58

Согласен, с кнопкой "Нет" забавно получается smile.png

С модальными окнами разобрался - нажимаю на спрятанную кнопку каждые 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

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


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

Понял, буду ковыряться дальше
Большое спасибо smile.png

Invision Power Board
© Invision Power Services