JavaScript / JQuery: $ (window) .resize, как запустить ПОСЛЕ изменения размера? - PullRequest
227 голосов
/ 18 мая 2010

Я использую JQuery как таковой:

$(window).resize(function() { ... });

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

Вопрос: Как вызвать функцию ПОСЛЕ завершения изменения размера окна браузера (чтобы событие запускалось только один раз)?

Ответы [ 12 ]

1 голос
/ 28 ноября 2012

Предполагая, что курсор мыши должен вернуться к документу после изменения размера окна, мы можем создать поведение, похожее на обратный вызов, с событием onmouseover. Не забывайте, что это решение может не работать для сенсорных экранов, как ожидалось.

var resizeTimer;
var resized = false;
$(window).resize(function() {
   clearTimeout(resizeTimer);
   resizeTimer = setTimeout(function() {
       if(!resized) {
           resized = true;
           $(document).mouseover(function() {
               resized = false;
               // do something here
               $(this).unbind("mouseover");
           })
       }
    }, 500);
});
0 голосов
/ 08 августа 2018

Это то, что я реализовал:

$ (окно) .resize (функция () { setTimeout (someFunction, 500); });

мы можем установить [clear the setTimeout][1], если ожидаем, что изменение размера произойдет менее чем 500ms

Удачи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...