Установите таймер фона в JavaScript - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь запретить пользователям в Dynamics 365 / CRM быстро нажимать на одну и ту же кнопку, таким образом инициируя синхронное событие блокировки окна.Мы смогли исправить это в IE, но Chrome, похоже, «запоминает» нажатия кнопок - и затем инициирует одно и то же событие, снова и снова, синхронно (как и ожидалось).

Я думал о созданиифоновый таймер, который будет запущен при первом нажатии кнопки, который будет поворачивать переменную как «True» до тех пор, пока таймер не завершит работу, а затем превратить переменную в «False».

В течение тех X секунд, в которые переменнаяустановлено значение true, последующие нажатия кнопок будут запускать событие, но не продолжаться дальше нескольких строк, где функция будет проверять, установлена ​​ли переменная в значение true или false.

Это мое (не работает)пока код:

function startTimer(duration) {
isTimerOn = true;
var timer = duration, seconds;
setInterval (function () {
    seconds = parseInt(timer % 60, 10);
    seconds = seconds < 10 ? 0 + seconds : seconds;
    if (--timer < 0) {
        timer = duration;
    }
}, 500);
isTimerOn = false;

};

 var isTimerOn = false;

    function createWordSummary() {
        if (isTimerOn) {
            return;
        }

        try {
            startTimer(3);
// Logic here

Буду признателен за помощь, заранее спасибо!

1 Ответ

0 голосов
/ 30 июня 2019

Вы можете попробовать что-то вроде этого:

let disabled = false;

function startTimer(s) {
  disabled = true;
  setTimeout(function() {
    disabled = false;
  }, s * 1000);
}

function createWordSummary() {
  if ( disabled ) return;
  
  startTimer(3);
  console.log('check');
}
<button onclick="createWordSummary()">Check</button>

Надеюсь, это поможет!

...