【问题标题】:How do you set up automatic scrolling for a chat app如何为聊天应用设置自动滚动
【发布时间】:2019-11-15 22:10:07
【问题描述】:

我正在制作一个聊天网络应用程序,除了实现登录系统外,我大部分时间都完成了,但有一个问题我似乎无法找到答案。这不是很复杂。

我需要知道如何做到这一点:

  1. 网站加载时聊天会滚动到底部
  2. 聊天会自动滚动到新消息,但前提是用户位于页面底部。

这可能不太难做到,但我什至不知道如何使用 javascript 滚动,所以谢谢。
当前站点位于此网址:Chat url

【问题讨论】:

  • window.scrollTo(0,document.body.scrollHeight);
  • @PedroLobito 谢谢你,但是#2 呢?

标签: javascript jquery html chat


【解决方案1】:

收到新消息或页面重新加载后,您可以使用:

window.scrollTo(0,document.body.scrollHeight);

页面加载时:

window.onload = function() {
  window.scrollTo(0,document.body.scrollHeight);
};

要在收到新消息后滚动,您可以将函数update_message 修改为:

function update_message(id,author,body,selfSent){
    var message = document.getElementById(id);
    if(selfSent){
        message.classList.replace("messagebox-o","messagebox-s");
        author = "You";
    }else{
        message.classList.replace("messagebox-s","messagebox-o");
    }
    message.querySelector(".author-text").innerText = author;
    message.querySelector(".body-text").innerHTML = body;
    window.scrollTo(0,document.body.scrollHeight); // ADD THIS
}

【讨论】:

  • 我只希望它在收到消息时用户已经在底部时向下滚动
  • @Hippolippo 你有没有试过滚动到你已经滚动到的位置?
  • @Hippolippo 如果你贴出相关的聊天代码,我也许可以告诉你在哪里放置window.scrollTo(0,document.body.scrollHeight);
  • @PedroLobito 我知道该放在哪里,但是在我发送消息请求之前如何检查用户是否已经在页面底部
  • @PedroLobito 我也有它的链接
【解决方案2】:

在插入新的消息元素check if the window is scrolled to the bottom 之前,添加该元素,如果是,再添加scroll to the bottom again

【讨论】:

  • 我将使用哪段代码来检查它是否专门滚动?我似乎无法让它发挥作用,无论如何我总是会变得真实
  • (window.innerHeight + window.pageYOffset) >= document.body.offsetHeight - 2 其中2 是离底部多近的公差(有些浏览器有一点问题,所以最小值应该是 2 px)
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 2010-10-18
  • 2014-10-19
  • 2014-10-06
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多