Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   JS - блокировка действий пользователя при выполнении функции (https://javascript.ru/forum/events/48741-js-blokirovka-dejjstvijj-polzovatelya-pri-vypolnenii-funkcii.html)

PickUp 15.07.2014 14:35

JS - блокировка действий пользователя при выполнении функции
 
Есть функция, которая вызывается onclick.
Длительность её выполнения - 1 секунда.
Как сделать так, чтобы на эту 1 секунду браузер не реагировал на действия пользователя, функция при клике не вызывалась по 200 раз и т.д?

hfts_rider 15.07.2014 15:48

Можешь сделать так что бы при клике на 1 сек появлялся блок поверх всех, просто прозрачный, фиксированный, на всю ширину и высоту с высоким индексом.

PickUp 15.07.2014 15:52

Цитата:

Сообщение от hfts_rider (Сообщение 321167)
Можешь сделать так что бы при клике на 1 сек появлялся блок поверх всех, просто прозрачный, фиксированный, на всю ширину и высоту с высоким индексом.

забыл дописать)
Там кроме клика ещё mousescroll анимация.
Т.е. блок - да, но ещё бы скрол отменить как-то

Erolast 15.07.2014 18:56

Если у тебя там долгие вычисления - браузер и так повиснет.
Если ajax-запрос, то есть два варианта. Первый - тупо выполнять запрос синхронно, но оне нехорош тем, что повиснет весь интерфейс. Второй таков:
<html>
  <head>
    <script>
      var request_is_in_progress = false;
      
      function request() {
        if (request_is_in_progress)
          return;
        request_is_in_progress = true;
        
        $.post("somescript.php", function() {
          request_is_in_progress = false;
        });
      }
    </script>
  </head>
  <body>
    <button onclick="request()">Do request</button>
  </body>
</html>


Часовой пояс GMT +3, время: 18:00.