聊天刷新和向下滚动到最新消息的功能不起作用

时间:2016-03-16 10:30:37

标签: javascript jquery ajax chat

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

这两个代码都在下面,我非常感谢每一条建议,我现在感到很无助......

jQuery load():

$(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");
}

1 个答案:

答案 0 :(得分:0)

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

你需要这样的东西:

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

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