2017-11-18 50 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

你可以提供的代碼。如果可能的話 –