使用高级滚动function创建AJAX聊天。 怎么样?
我需要一些使用示例来说明如何实现这一目标。 我有一些HTML:
然后我有一些JQuery:
// This function sets up the ajax that posts chat messages to the server. $(function() { $('#send').click(function () { $.ajax( { url: "chat/postmsg",, data: { msg: $('#message').val(); }, type: "POST", success: function (response) { // Server sends back formated html to append to chatDisplay. $('#chatDisplay').append(response); //scroll to bottom of chatDisplay } }); }); }); // This function periodically checks the server for updates to the chat. $(function () { setInterval(function() { $.ajax( { url: "chat/getupdates", type: "POST", success: function (response) { // Server sends back any new updates since last check. // Perform scroll and data display functions. Pseudo-code to follow: // If (chatDisplay is scrolled to bottom) // { // append response to chatDisplay // scroll to bottom of chatDisplay // } // else if (chatDisplay is scrolled up from bottom by any amount) // { // append response to chatDisplay, but do not scroll to bottom. // } } }); }, 7000); });
这只是基本聊天function的一个示例,当然不包括服务器端代码。 我需要的是如何完成伪代码描述的用法示例。 如何检测用户是否滚动到DIV的底部,如何将它们滚动到底部? 如果他们向上滚动查看聊天记录,我不希望他们跳到DIV的底部。
我听说过JQuery的ScrollTo插件,但只需要一些例子。
提前致谢!
编辑:这是有兴趣的人的解决方案。
success: function (response) { var elem = $('#chatDisplay'); var atBottom = (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight()); $('#chatDisplay').append(response); if (atBottom) $('#chatDisplay').scrollTop($('#chatDisplay')[0].scrollHeight); }
请访问http://www.jsfiddle.net/f4YFL/4/以获取此示例。
好像你可以将你的伪代码重构为:
追加对chatDisplay的响应if(chatDisplay在底部){滚动到底部}
以下是如何确定是否滚动到底部的链接:
http://yelotofu.com/2008/10/jquery-how-to-tell-if-youre-scroll-to-bottom/
希望有所帮助。
短发