如何停止跳转来自 Ajax.load 方法的内容
How to stop jumping the content coming from Ajax.load methods?
我在页面上有一个聊天功能。当两个用户互相聊天时,我找不到在用户 A 的聊天窗口中自动加载新消息用户 B 的方法。这就是为什么我使用
<script type="text/javascript">
$(document).ready(function(){
$("#getBuddieContacts").load("ajax_getContactsList.php");
$("#getFriendsRequestList").load("ajax_getMessages.php");
});
setInterval(function() {$("#getBuddieContacts").load("ajax_getContactsList.php");}, 5000);
setInterval(function() {$("#getFriendsRequestList").load("ajax_getMessages.php");}, 5000);
</script>
PHP 脚本每次加载脚本时都会返回完整的聊天(从 0 到最新(。(我不知道在用户 A 的聊天屏幕上立即显示用户 B 发送的消息的技术(。:(
代码工作正常,但是每当我们尝试复制/粘贴或选择来自ajax加载文件的任何文本时,内容都会重新加载,并且看起来像在屏幕上跳跃(不是跳转显示明智,而是行为明智(。
所以,我的问题是,如何进行更改,以便来自用户 B 的新消息可以显示在用户 A 屏幕上,或者我应该使用什么技术?
不幸的是,
我没有适合您的可复制和粘贴的解决方案。 问题的核心似乎是,当用户在窗口中选择文本时,下一次更新会删除他选择的 DOM 元素,并将其替换为新元素。
鉴于您当前的计划,我会执行以下操作:
更改文本加载方案以返回增量更新而不是整个对话。 为此,您可以让它也传回每组更新的时间戳。 客户端存储时间戳,并在请求下一次更新时将其传递给服务器。 服务器使用新的时间戳和任何新的聊天文本进行响应。
更改客户端以将每个新成员添加到聊天中自己的div 中。 这样,您就不会删除用户从 DOM 中选择的对话部分。
或者,在处理来自.php脚本的响应的 javascript 函数中,您可以想象执行以下操作:
var newConversationText = "new conversation text here - get it from... however you're getting it now";
var oldConversationText = $("#div-containing-conversation-text").html();
var diff =newConversationText.substring(oldConversationText.length);
var newDiv = $("<div>" + diff + "</div>");
$("#div-containing-conversation-text").append(newDiv);
相关文章:
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- jQuery css可见性在load方法中不起作用
- 使用load方法需要jquery-mesi-addon帮助
- 使用.load方法后,请收听单击事件
- jQuery .load:刷新页面时加载同一页面的任何方法
- 在 .load() 方法检索的 HTML 中查找元素时出现问题
- jQuery 使用 .load 方法下拉列表
- 在图像上使用 JQuery 的 .load() 的正确方法是什么?
- 在 ajax post 成功后,如何使用 JQuery .load() 方法发送 POST 请求
- 如何停止跳转来自 Ajax.load 方法的内容
- javascript load()方法在第一次加载资源后缓存资源
- 在内容被.load()方法更改后,jQuery调用函数
- 为什么当我将函数添加到Snap.load(..正在加载SVG..我的方法..)中时,我不能调用Snap.Road()内部
- jQuery load()方法不起作用
- jQuery:.load()方法替换目标选择器内容或将其附加到其中
- 使用jQuery's.load方法从页面中返回一个元素
- jQuery load()方法冲突
- 未捕获类型错误:Object #
没有方法'load' - Jquery不能调用方法'load'的定义
- Ajax,方法load()用于select字段中的选项值