Остановка функции JavaSript

119
04 декабря 2018, 03:00

Нужно сделать Ajax запрос только один раз и если пользователь прокрутит документ на 100px. Сейчас делается постоянно при прокрутке на 1px. То есть если скролл больше 100, функция работает на каждый пиксель скролла, а нужно только на 101 вызвать и остановить. return false не работает

window.onscroll = function() {
        var scrolled = window.pageYOffset || document.documentElement.scrollTop;
        if (scrolled > 100){
            $.ajax({
                url: '/google', success: function (result) {
                    $('.google-sidebar').html(result);
                    return false
                }
            });
        }
        return false
    }
Answer 1

В первом приближении

Сохраните в замыкании флаг, который будет вам сообщать был запрос отправлен ранее или нет.

(function(){
  var isRequestSended = false
  window.onscroll = function(event) {
    var scrolled = window.pageYOffset || document.documentElement.scrollTop;
    if (!isRequestSended && scrolled > 100){
      isRequestSended = true
      alert('Make ajax-request.')
      /*
      $.ajax({
        url: '/google', success: function (result) {
            $('.google-sidebar').html(result);
            return false
        }
      });
      */
    }
  }
})()

Во втором

Если вы делаете только один запрос, лучше удалять, нафиг, обработчик, чтобы не грузить систему ненужными проверками.

(function(){
  document.addEventListener('scroll', requestAJAXOnScroll)
  function requestAJAXOnScroll() {
    var scrolled = window.pageYOffset || document.documentElement.scrollTop;
    if (scrolled > 100){
      document.removeEventListener('scroll', requestAJAXOnScroll)
      alert('Make ajax-request.')
      /*
      $.ajax({
        url: '/google', success: function (result) {
            $('.google-sidebar').html(result);
            return false
        }
      });
      */
    }
  }
})()
READ ALSO
Поместить текст в Ace редактор

Поместить текст в Ace редактор

Нашел markdown редактор на js, построенный на базе текстового редактора Ace[GitHub]Проблема в том, что у меня не получается поместить текст в редактор...

158
Google Maps Info Windows (попап текст)

Google Maps Info Windows (попап текст)

Нужно добавить текст по клику к каждому маркеру, но не пойму, как это сделатьПодскажите, пожалуйста, или покажите на примере

152
Изменение положения текста. css+html

Изменение положения текста. css+html

Как сделать так чтобы id="tunika" была с лева, а id"misha" с права, но в одном ряде

130
Как подключить файл index.php к index.html [дубликат]

Как подключить файл index.php к index.html [дубликат]

Данный вопрос уже был задан и имеет решение:

131