2016-05-30 4 views
0

Я работаю в чате, и мне нужно, чтобы сайт прокручивался до нижней части chatt, и если человек хочет прокрутить вверх, скрипт для прокрутки вниз остановится. У меня есть чат внутри div с id #chat_innhold, и вот мой attemnt.Прокрутите страницу вниз, когда близко к основанию

window.setInterval(function scrolled(o) 
{ 
     if(o.offsetHeight + o.scrollTop > o.scrollHeight - 75) 
     { 
      window.setInterval=function() 
       { 
       return false; 
       } 
     } 
     else 
     { 
      window.setInterval=function() 
       { 
       $("html, #chat_innhold").animate({ scrollTop: $('#chat_innhold').prop("scrollHeight")}, 'slow'); 
       } 
     } 
}, 1000); 

Когда я нахожусь на 75 пикселей выше дна, вы хотите остановить прокрутку до нижней функции.

ответ

0

Почему вы переопределяете window.setInterval?

+0

его просто плохое кодирования ... Im очень новый JavaScript, и я вижу ошибку. я думаю, что это должно быть две разные функции или что-то подобное –

0

Если я правильно понял, что вам нужно что-то вроде этого

<div class="wrapper"> 
    <button>Go to bottom</button> 
    <button class="go-top">Go to top</button> 
</div> 

body, 
.wrapper { 
    margin: 0; 
    padding: 0; 
} 
.wrapper { 
    position: relative; 
    height: 1000px; 
} 
.go-top { 
    bottom: 0; 
    position: absolute; 
    left: 0; 
} 

var elem = $('.wrapper')[0]; 
if (elem.addEventListener) { 
    if ('onWheel' in document) { 
    // IE9+, FF17+, Ch31+ 
    elem.addEventListener("wheel", onWheel); 
    } else if ('onmousewheel' in document) { 
    // old variant 
    elem.addEventListener("mousewheel", onWheel); 
    } else { 
    // Firefox < 17 
    elem.addEventListener("MozMousePixelScroll", onWheel); 
    } 
} else { // IE8- 
    elem.attachEvent("onmousewheel", onWheel); 
} 

function onWheel(e) { 
    e = e || window.event; 
    var delta = e.deltaY || e.detail || e.wheelDelta; 
    if(delta < 0 || delta > 0) { 
     $('html, body').stop(); 
    } 
} 

var deltaWindowBodyHeight = $('body').height() - $(window).height(); 

function goToBottom() { 
    $('html, body').animate({ 
     scrollTop: deltaWindowBodyHeight - 75 
    }, 1000); 
} 
function goToTop() { 
    $('html, body').animate({ 
     scrollTop: 0 
    }, 1000); 
} 
$('button').click(function() { 
if($(this).hasClass('go-top')) { 
    goToTop(); 
} else { 
    goToBottom(); 
} 
}); 

JSFiddle example

+0

, что я заметил, что полоса прокрутки всегда будет внизу, если пользователь не начнет прокручивать вверх. С момента своего общения в чате я хочу, чтобы все новые чаты отображались внизу, когда появлялась новая информация, а если пользователь прокручивается, функция останавливает всегда в нижнем скрипте. Надеюсь, что это делает sence :) –

+0

Вот скрипт, который я получил, но я хочу остановить функцию, когда я использую scrollwheel: –

+0

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