发送新信息时向下滚动到底部
Scroll down to bottom when new message is sent
我有一个评论框,我使用下面的JS将滚动设置为底部,并在发布新消息时向下滚动。
window.setInterval(function() {
var elem = document.getElementById('Commentbox');
elem.scrollTop = elem.scrollHeight;
}, 500);
这有点奏效,当一条新消息发布时,它会向下滚动,但当我向上滚动查看旧消息时,它又会向下滚动。有没有办法防止这种情况发生?
我不会使用interval函数向下滚动,因为您的实现每500毫秒滚动一次。我认为你有一个功能,可以添加新消息,并在传入消息时调用:
function addMessage() {
// here you add the new message to DOM
// ...
// then you can scroll down once to show the new messages
var elem = document.getElementById('Commentbox');
elem.scrollTop = elem.scrollHeight;
}
如果你发布代码如何添加你的新消息,我可以更好地帮助你。
因为正确的解决方案对我不起作用,我做了这样的事情:
$('.your-div-class').scrollTop($('.your-div-class').height()*$('.your-div-class').height());
我是怎么想到这个主意的
-
首先,我在浏览器的控制台中写下了我想自动滚动的div的高度:
CCD_ 2。
-
然后我找到了scrollTop值:
console.log($('.your-div-class').scrollTop());
。 -
然后我把这个放在控制台上:
$('.your-div-class').scrollTop($('.your-div-class').height()*$('.your-div-class').height());
,发现我只花了一半的时间就意识到,
$('.your-div-class').scrollTop($('.your-div-class').height()*$('.your-div-class').height());
会让我向下滚动足够多。
如果它对您不起作用。您可以使用:$('.your-div-class').scrollTop($('.your-div-class').height()*1000);
。这对你来说应该很好。
将间隔设置为变量,然后在向下滚动完成时使用window.clearInterval()
清除间隔。
var timer = window.setInterval(function() {
var elem = document.getElementById('Commentbox');
elem.scrollTop = elem.scrollHeight;
window.clearInterval(timer);
}, 500);
@Wowsk有一个很好的答案,但您的后续问题听起来像是在寻找功能上的细微差异。我想这应该能让你达到目的,但我还没有测试过。
var lastScrollTop = 0;
var elem = document.getElementById('Commentbox');
var timer = window.setInterval(function() {
elem.scrollTop = elem.scrollHeight;
lastScrollTop = elem.scrollTop
}, 500);
elem.addEventListener("scroll", function(){
if(lastScrollTop < elem.scrollTop){
window.clearInterval(timer);
}
}, false);
我只是在发布前测试了一下,希望它能有所帮助——参考小提琴:https://jsfiddle.net/condorhauck/ak1L12pd/1/
- 将视口底部滚动到元素底部
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- javascript跨浏览器确定用户是否滚动到页面底部
- javascript移动交叉浏览器确定用户是否滚动到页面底部
- 如何防止firefox在打开大型弹出窗口时滚动到页面底部
- 滚动到顶部或底部后的简单效果
- jQuery滚动到聊天框底部
- 如何仅在向上滚动时将页脚粘贴到窗口底部会导致页脚不显示
- 页面加载时自动滚动到底部
- 当滚动条到达容器底部时设置动画
- 表-滚动到底部
- 滚动至页面底部附近
- 刷新滚动到底部
- 在底部滚动
- 在不使用Javascript的情况下将滚动条滚动到底部
- JQuery 自动滚动到底部(但在鼠标滚动时禁用)
- 页脚在滚动底部时没有设置高度动画
- Javascript -在另一个浏览器/页面中滚动底部
- 如何检测何时滚动底部高度为<30.
- 如何获得窗口.滚动底部高度