【问题标题】:Function for chat refresh and scrolling down to newest messages doesn't work聊天刷新和向下滚动到最新消息的功能不起作用
【发布时间】:2016-03-16 10:30:36
【问题描述】:

我收到了应该刷新聊天框内容的功能,它还应该向下滚动到最新消息。我正在使用 jQuery load(); 进行刷新,但是当我收到新消息时它没有向下滚动。正如我所说,我已经收到了使用函数的 ajax,它应该替换我的 jQuery 函数。但它甚至不加载内容。

两个代码都在下面,非常感谢每一个建议,我现在真的很无助……

jQuery 加载():

$(document).ready(function(){ 
    var out = document.getElementById("chat");
    var auto = $('#chat'); 
    var add = setInterval(function() {
        // allow 1px inaccuracy by adding 1
        var isScrolledToBottom = out.scrollHeight - out.clientHeight <= out.scrollTop + 1;
        console.log(out.scrollHeight - out.clientHeight,  out.scrollTop + 1);

        // scroll to bottom if isScrolledToBotto
        auto.load("chat_vypis.php")
        if (isScrolledToBottom)
            out.scrollTop = out.scrollHeight - out.clientHeight;
    },500);
    console.log(add);
    return false; 
});

Ajax 使用:

var needsToScrollToBottom=true;
var url='chat_vypis.php';

function updateChat() {
    $.ajax({
        url:url,
        method:'GET',
        success:function(data) {
            var chat=$('#chat');
            chat.html(data);
            if (needsToScrollToBottom) {
                scrollToBottom(chat);
            }
        },
        //even on error, but after the call has completed
        complete:function() {
            setTimeout(updateChat,500);
        }
    });
}

function scrollToBottom(elem) {
    elem.animate({ scrollTop: elem.height() }, "slow");
}

【问题讨论】:

  • 第二个到底发生了什么
  • @epoch 什么都没有——这就是问题所在。聊天内容甚至没有加载...
  • 添加一些日志,看看它在哪里停止
  • @epoch 抱歉,我是 jQuery 的真正初学者,你的意思是 console.log() ?如果你这样做了,我尝试为 updateChat 和 scrollToBottom 添加 2 个日志,但我不知道从哪里获得该日志结果?
  • 在浏览器中打开开发者工具 :)

标签: javascript jquery ajax chat


【解决方案1】:

好的,访问您的页面后,主要问题似乎是按钮提交页面而不是调用您的函数。

你需要这样的东西:

$(document).ready(function() {
    $('form').submit(function(e) {
        // stop the submit
        e.preventDefault();

        // execute your function
        updateChat();
    });
});

【讨论】:

  • 但是我必须调用“send.php”将发送的消息添加到数据库中,它不会添加这个函数,是吗?
  • 好的,我试过这个:$(document).ready(function() { updateChat(); }); 但它把我扔到聊天框的一半(滚动到底部的一半),然后我就卡在那里了。我不能向下滚动,甚至不能向上滚动...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多