如何实现web端的对话聊天功能

本文介绍了JavaScript中实现滚动条始终位于底部的方法,持久化本地存储消息的技巧,以及处理回车键输入(ctrl+enter和enter)和定时清空对话内容的代码示例。
摘要由CSDN通过智能技术生成
1、如何实现滚动条始终居于底部?
  //设置滚动条到最底部
   const scrollBottom = () => {
  //nextTick的作用是等到更新页面后再设置滚动条到最底部,避免对话数据未更新导致始终滚动到倒数第二行
  nextTick(() => {
    info.value.scrollTop = info.value.scrollHeight;
  });
};
2、如何实现持久化本地存储消息?
localStorage.setItem("messages", JSON.stringify(messages.value));
messages.value = JSON.parse(localStorage.getItem("messages") as string);
3、回车键输入input时,ctrl+enter换行,enter不换行?
//ctrl+enter换行,enter不换行
const handelEnter = (event?: any) => {
  if (event.ctrlKey && event.keyCode === 13) {
    //ctrl+enter
    input.value += "\n";
    return true;
  } else if (event.keyCode === 13) {
    //enter
    event.preventDefault(); // 阻止浏览器默认换行操作
    return false;
  }
}
4、如何定时清空对话内容?

        通过每条消息的time进行判断,当打开页面的时间戳减去最后一条消息的时间戳的值大于一个 月的时间戳,就清空对话内容,否则,直接获取对话内容,展示在页面上。

const initMessages = () => {
  if (store.messages !== null) {
    const storeMessages = store.messages;
    const timestamp = new Date().getTime() - storeMessages[0]?.time;
    // 超过一个月时清除对话内容
    if (timestamp >= 2592000000) {
      localStorage.removeItem("messages");
      localStorage.setItem("messages", JSON.stringify(messages.value));
    } else {
      //页面创建时获取对话内容
      messages.value = store.messages;
    }
  }
  scrollBottom();
};

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值