如果用户一直向下滚动,则按间隔向下滚动
Scrolling down on interval if the user is scrolled all the way down
我有这个问题,
我正在创建一个聊天,每2秒更新一次,通过AJAX。
现在我想滚动到底部,每次它加载,很好,这工作
现在的问题是,如果他们向上滚动查看旧消息,它会向下滚动,很烦人,对吧?现在我试着想出了一个解决方案,我觉得应该可行。但是我太笨了。有人能帮我吗?:
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语句应该阻止它…对吧?
我建议这样设置一个标志:
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);
}
},
});
}
这样当用户向上滚动时,标志为假,当用户向下滚动时,标志为真。
相关文章:
- javascript跨浏览器确定用户是否滚动到页面底部
- javascript移动交叉浏览器确定用户是否滚动到页面底部
- jQuery:如何检测用户何时再次滚动到顶部
- 当用户已经向下滚动页面时,我如何导航到锚标记
- 在用户用动画滚动175像素后缩小固定的Div
- 如何发现用户是否使用jQuery滚动到HTML容器的末尾
- 如何检测用户何时在主动滚动
- 当用户滚动到页面的某个部分时,如何触发关键帧
- 如何让左侧导航跟随用户向下滚动页面
- 如何检测用户是否移动了滚动条
- 当用户将鼠标移到屏幕/图表上时,自动滚动将暂停.如果鼠标移动停止,自动滚动将再次恢复
- 下一个/上一个锚链接,如何在用户滚动时更新下一个/上一个链接
- 在用户滚动时加载单个页面网站的不同部分
- 当用户滚动到底部时,Ajax函数会多次触发
- 用户向下滚动时自动垂直展开
- 如何制作HTML小部件“;跟随“;当用户在页面上下滚动时,保持可见
- 当用户向下滚动我的网页时,如何删除chrome地址栏周围的边框
- 如何使用jquery自动滚动用户
- 防止页面重新加载后退按钮(使用缓存).或者向下滚动用户.(至少在iPhone上发行)
- 强制垂直滚动用户操作显示为水平滚动