2017-11-18 52 views
0

我有一个使用PHP,mySQL和jQuery创建的聊天应用程序。它对我来说工作得很好。但是现在我想在接收者看到消息时添加“消息可见”功能。或者它可以像在WhatsApp中做的那样是一个“勾号”功能。问题是我不知道如何做到这一点。如何使用jQuery在聊天中检查消息状态“消息可见”

下面是仅用于在用户之间发送和接收消息的脚本。我需要做什么来实现这一点?

$ = jQuery; 
var currentID = null; 
var chatTimer = null; 
var oldhtml = ""; 

function fetch_data() { 
    $.ajax({ 
    url: "select.php", 
    method: "POST", 
    success: function(data) { 
     $('#live_data').html(data); 
    } 
    }); 
} 

function fetch_chat() { 
    $.ajax({ 
    url: "fetch_chat.php", 
    method: "POST", 
    data: { 
     id: currentID 
    }, 
    dataType: "text", 
    success: function(data) { 
     $("#chatbox").show(); 
     $('#messages').html(data); 
     $("div.area").show(); 
     if (oldhtml !== data) { 
     $('#messages').scrollTop($('#messages')[0].scrollHeight); 
     } 
     oldhtml = data; 
    } 
    }); 
} 

$(document).ready(function() { 
    fetch_data(); 

    setInterval(function() { 
    fetch_chat(); 
    }, 500); 

    $(document).on('click', '.first_name', function() { 
    currentID = $(this).data("id1"); 
    fetch_chat(); 
    }); 

    $("#sub").click(function() { 
    var text = $("#text").val(); 
    $.post('insert_chat.php', { 
     id: currentID, 
     msg: text 
    }, function(data) { 
     $("#messages").append(data); 
     $("#text").val(''); 
    }); 
    }); 
}); 
+0

目前尚不清楚“看到”的定义是什么查看此处查看如何检查某些内容在视口中可见https://www.google.nl/search?q=jquery+is+visible+in+ viewport – mplungjan

+0

当接收者查看接收到的MessAge时,看到的意思是“看到”应显示给发件人 –

+0

您需要详细说明您的数据模型...例如这个问题,因为它目前是太宽泛IMO – abigperson

回答

0

你需要一个标志在您的讯息表, 当接收器获取一些信息,这些信息的状态应设置为“可见”,或者,如果你愿意,你可以使用Ajax调用做到这一点后,该接收者打开聊天框或发生任何事件(如接收者点击聊天框)。 在聊天框中,您必须为每条消息设置id,并且每次您检索消息或检查新消息时,还必须检查“unseen”消息并在消息旁边发送消息状态,并且使用javascript,必须更改类这些消息的“看不见”和其他消息“看到”

0

我假设消息被“看到”它必须是可见的聊天的HTML节点($(“#消息”)在你的情况) ,这意味着某种原因它可以被隐藏(例如:另一个聊天html节点“活动”,如果有几个,并且只有一个可以一次处于活动状态,或者浏览器标签失焦,或者甚至消息不在聊天html节点的滚动视图...)。因此,为什么不只是添加事件监听器,监听它是否获取“活动”状态或浏览器选项卡焦点......当条件满足时,只需执行一个ajax查询来改变状态(接收到的,阅读(在这种情况下)...)数据库中的消息的ID(假设每个消息都有一个唯一的ID集)。当然,应该有一个定时器retreiving消息的状态,届时,在发送方,你选择阅读消息的ID和设法让他们“打勾”的意愿,甚至做别的事情。

+0

你可以提供的代码。如果可能的话 –