Прошу помощи коллег
Добрый день,
Требуется: Отобразить модальное окно, если в течении 30 секунд не было клика по двум кнопкам с разными классами Правильно понимаю, что нужно отменить стандартное всплытие на кнопках и поставить обработчик на сам body, а спустя заданный временной период отменить preventDefault? Прошу совета у более компетентных коллег, как решить данную задачу наименее "колхозно" Спасибо! :) |
напоминание о нажатии
Sviside,
<!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Document</title> <script> window.addEventListener('load', function() { const limit = 5000; let data = Array.from(document.querySelectorAll('button'), (button, i) => (button.addEventListener('click', () => data[i] = performance.now()), performance.now()) ) const loop = now => { const delta = now - Math.min(...data); if(delta > limit) show(delta); else show(0); requestAnimationFrame(loop) }; const show = num => out.innerHTML = num ? `Не было нажатий ${Math.trunc(num/1000)} сек.` : ''; requestAnimationFrame(loop); }) </script> </head> <body> <button type="button">click</button> <button type="button">click</button> <output id="out"></output> </body> </html> |
Несколько иное имел ввиду, но суть да, понял)
Большое вам спасибо! |
рони,
Несколько не то у меня получается. Скажите пожалуйста, я могу же повесить addEventListener на элемент, и загнать все в setTimeout ? |
Sviside,
не понимаю, не знаю что вы хотите сделать. |
рони,
Если интересно, но решил задачу просто и костыльно - даю setTimeout, а по клику clearTimeout Но мне понравилась ваша реализация, попробую переписать под себя Еще раз большое спасибо! |
Часовой пояс GMT +3, время: 13:24. |