#javascript #lodash #throttling
#javascript #Lodash #регулирование
Вопрос:
Я намерен отключить прослушиватель щелчков по некоторым ссылкам и кнопкам отправки формы. Основная идея была примерно такой:
<a href="#" class="throttled-click">Click</a>
<script>
window.onload = function() {
tags = document.findElementsByClassName("throttled-click");
for (let tag of tags) {
tag.onclick = _.throttle(tag.click, 1000, { 'trailing': false });
// Clearly doesn't work
}
}
</script>
Приведенный выше код на самом деле не работает, поскольку независимо от того, что я делаю, прослушиватель событий щелчка по умолчанию не будет регулироваться. Если я передам какую-либо другую функцию (например console.log("Throttled")
), она будет ограничена, но прослушиватель событий щелчка по умолчанию не будет.
Кроме попытки написать собственную функцию регулирования, у меня нет идей.
Обратите внимание, что я не разработчик js, поэтому я могу упустить что-то очевидное.
РЕДАКТИРОВАТЬ: Цель регулирования прослушивателя событий щелчка по умолчанию — запретить пользователям отправлять слишком много форм, когда что-то зависает. Конечно, отправка формы обычно влечет за собой перенаправление, которое подразумевает, что достаточно просто отключить событие щелчка HTML после первого щелчка.
Моя идея заключалась в том, чтобы реализовать ограничение для случаев, когда страница не обновляется или возникает какой-то крайний случай, когда запрос никогда не доходит до сервера, и пользователь фактически должен снова нажать кнопку отправки.
Я смог сделать это с помощью пользовательской реализации, я не думаю, что есть способ сделать это с существующими стандартными библиотеками, которые я нахожу странными.
Комментарии:
1. Было бы:
tag.onclick = _.throttle(tag.onclick, 1000, { 'trailing': false });
2. Вы не можете пройти
tag.onclick
внутрь, потому что это какой-то типFunction
, а не(args) => any
тип. Первый, по-видимому, не является или не должен быть вызываемым. В любом случае Lodash не примет его.3. Вроде как не имеет смысла регулировать само событие щелчка. Это было бы похоже на удаление мыши пользователя. Пока вы прослушиваете событие, событие будет вызвано. Обычно вы передаете функцию прослушивателю onclick, например «что происходит при нажатии». Затем эта функция может быть отрегулирована, но не само событие щелчка. Может быть, в этой истории есть что-то еще, почему вы не хотите регулировать событие щелчка? Также … он думает, что это должно быть
tag.onclick =
, а неtags.onclick =
опечатка?4. @PascalLamers хорошо уловил опечатку.
5. @PascalLamers регулирование щелчка не является чем-то плохим, на самом деле это довольно стандартная практика в Android (вы не хотите открывать 2 действия только потому, что вы быстро дважды щелкнули).