javascript - 滚动到 div 顶部时,将加载 ajax

标签 javascript jquery html ajax

我目前正在开发一个 django 聊天应用程序,该应用程序涉及使用 ajax 加载聊天消息列表,并通过 jquery 将它们附加到我的模板中的 div 之一(例如 chatmsg_div)。

由于聊天应用程序将被许多用户使用,因此我需要对聊天消息进行分页,我已经成功地做到了这一点。现在,只会加载聊天室中最后 20 条聊天消息供用户查看(最新消息位于 div 底部)。

但是,我需要做的另一个要求是在滚动到 chatmsg_div 顶部时加载聊天历史记录(例如另一个页面中的前 20 条消息)。

我的问题是:

  1. 我在 google 上做了一些研究,但找不到任何 jquery 函数可以让我在到达特定 div 的顶部时触发 ajax 调用。我对 jquery 还很陌生,所以即使我正在寻找的答案是显而易见的,也请原谅我。
  2. 加载前 20 条聊天消息后,我希望 div 保留在我上次滚动到的位置,而不是转到 div 顶部

到目前为止,我已经尝试过:

$('#chatmsg_div').scroll(function () { if ($(this).scrollTop() > 100) { debugger; }
});

预先感谢任何能够回答我的问题的人。

最佳答案

要检查当新消息到达且由于用户已滚动到顶部而不可见时是否需要滚动,您可以执行以下操作:

var shouldScroll = (content.scrollTop + content.offsetHeight >= content.scrollHeight);

其中内容是消息的DOM容器

用于检测页面是否滚动到最顶部:

if (content.scrollTop == 0) {
    // load message history here
}

现在,要实现新消息的自动滚动并且当前滚动位于页面底部,您可以这样做:

if (shouldScroll) {
    content.scrollTop = content.scrollHeight;
}

只要您有足够的知识来完成其他任务,这应该可以回答您的所有问题。无需使用 jQuery

关于javascript - 滚动到 div 顶部时,将加载 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185520/

相关文章:

javascript - 创建递归表单元素

javascript - 开发 React 应用程序时编译/转换代码

javascript - 在 dom 就绪时删除现有的 html 属性并添加我的

html - 当文本分成两行时,Flexbox 用空白填充 div

php - Javascript 将内容写入 PHP var 以在 IF 语句中使用不起作用

javascript - 在 Mathjax- CkEditor 中自定义我的自定义按钮

jQuery .load 单击 b 后 react 缓慢

javascript - AJAX 将变量从 javascript 传递到 PHP

javascript - 如果输入中插入两个数字字符,则显示/隐藏 div

javascript - Jquery 照片上传仅接受 jpeg 不起作用