Как сделать ограничение на количество кликов в секунду js

Как можно реализовать ограниченное количество кликов в секунду по кнопке с помощью js.

Если вот такой вот код - jsfiddle.net

Нужно сделать так чтобы на кнопку с id="big-btn" можно было нажать не больше 15 раз в 1 секунду. Если пользователь нажимает более 15 раз то должно срабатывать действие, например появляться всплывающие окно.

var clicks = 0;

function insertText(clicks) {
  document.getElementById('clicks-count').innerText = clicks;
}

const onClick = () => {
    clicks += 1;
    insertText(clicks);
}

document.getElementById('big-btn').addEventListener('click', onClick)
<div class="n1">
  <button id="big-btn">Клик</button>
  <div id="clicks-count">0</div>
</div>

Ответы (1 шт):

Автор решения: Andrey Semykin

Речь точно о кликах мышкой, не о нажатиях клавиши? Не могу представить себе человека, кликающего 15 раз в секунду. :) В любом случае, можно использовать такую конструкцию. Она будет обрабатывать клики раз в 100мс, все остальные клики игнорируются.

var clicks = 0;

function delay(f) {

  let isCooldown = false;

  return function() {
    if (isCooldown) return;

    f.apply(this, arguments);

    isCooldown = true;

    setTimeout(() => isCooldown = false, 100);
  };

}

function insertText(clicks) {
  document.getElementById('clicks-count').innerText = clicks;
}

const onClick = () => {
    console.log('click!');
    clicks += 1;
    insertText(clicks);
}

document.getElementById('big-btn').addEventListener('click', delay(onClick))
<div class="n1">
  <button id="big-btn">Клик</button>
  <div id="clicks-count">0</div>
</div>

→ Ссылка