2015-10-09 6 views
1

у меня есть эта проблема,Прокрутка вниз на интервале, если пользователь прокручивается весь путь вниз

Я создаю чат, который обновляется каждые 2 secounds, с помощью AJAX.

Теперь я хочу прокручивать донизу, каждый раз, когда он загружается, отлично работает.

Теперь проблема в том, что если они прокручиваются вверх, чтобы проверять старые сообщения, они будут прокручивать их вниз, досадно? Теперь я попытался придумать решение, которое imo должно работать. Но я так глуп. Может ли кто-нибудь мне помочь ?:

function loadChat() { 
    $.ajax({ 
     url: 'ajax/load_chat.php', 
     success: function(data) { 
      $('#chatbox').html(data); 
      //console.log($('#chatbox')[0].scrollHeight - $('#chatbox').innerHeight()); 
      //console.log($('#chatbox').scrollTop()); 
      if($('#chatbox')[0].scrollHeight - $('#chatbox').innerHeight() + 50 < $('#chatbox').scrollTop()) { 
       $("#chatbox").stop().animate({ scrollTop: $('#chatbox')[0].scrollHeight}, 200); 
      } 
     }, 
    }); 
} 

Этот код позволяет прокручивать вниз, несмотря ни на что, но инструкция if должна прекратить это ... правильно?

+0

Благодаря taxicala для редактирования :) Я не знаю, почему оно не выравнивал код: S – Dyrhoi

ответ

1

Я предлагаю установки флага следующим образом:

var atBottom = true; 
$('#chatbox').on('scroll', function() { 
    if($(this).scrollTop() + $(this).innerHeight() >= this.scrollHeight) { 
     atBottom = true; 
    } else { 
     atBottom = false; 
    } 
}); 

function loadChat() { 
    $.ajax({ 
     url: 'ajax/load_chat.php', 
     success: function(data) { 
      $('#chatbox').html(data); 
      //console.log($('#chatbox')[0].scrollHeight - $('#chatbox').innerHeight()); 
      //console.log($('#chatbox').scrollTop()); 
      if(atBottom) { 
       $("#chatbox").stop().animate({ scrollTop: $('#chatbox')[0].scrollHeight}, 200); 
      } 
     }, 
    }); 
} 

Таким образом, когда пользователь прокручивает вверх, флаг получает falsy и когда пользователь прокручивает на дно, он получает truthy.

+0

Он теперь работает после того, как я переехал мой

Смежные вопросы