2017-08-02 58 views
1

我構建了一個聊天應用程序,並使用localStorage即使在頁面刷新後也保持對話。如果聊天結束,我想刪除localStorage並清除聊天窗口,這工作正常。但是,如果用戶再次發起聊天,並刷新頁面比以前的聊天對話恢復到localStorage本地存儲恢復頁面刷新後刪除的數據

下面是我的代碼:

var CHAT_MSG_LOCAL = []; //store messages into it 
    CHAT_MSG_LOCAL.push(msgObj); //push message into the variable 

    //save in local storage when page refreshed 
    $(window).on('unload', function() {    
     saveLocalData(CHAT_MSG_LOCAL); 
    }); 

    //Retrive from local storage when page load 
    $(document).ready(function() { 
     retriveLocalData(); 
     var data = retriveLocalData(); 
     if (data.length > 0) 
     for (var i = 0; i < data.length; i++) { 
      output(data[i]); // generate html 
     } 
    }); 

    //Chat End 
    $(".close-conversation").on("click", function (e) { 
      e.preventDefault();     
      localStorage.removeItem('local-messages'); 
      localStorage.setItem('local-messages', []); 

     }); 

    //save function 
    function saveLocalData(CHAT_MSG_LOCAL) { 
     var messageString = JSON.stringify(CHAT_MSG_LOCAL); 
     localStorage.setItem('local-messages', messageString); 

    } 

    //retrive function 
    function retriveLocalData() { 
     var localmsgObj = localStorage.getItem('local-messages'); 
     var retrievedObject = {}; 
     if (localmsgObj.length > 0) { 
      retrievedObject = JSON.parse(localmsgObj); 
     } 
     return retrievedObject; 
    } 

請幫我發現其中的錯誤。提前致謝。

回答

1

由於上述代碼未清除CHAT_MSG_LOCAL參數,因此您正面臨問題。

請使用下面的代碼使param爲空。

$(".close-conversation").on("click", function (e) { 
     e.preventDefault();     
     localStorage.removeItem('local-messages'); 
     localStorage.setItem('local-messages', []); 
     CHAT_MSG_LOCAL = []; //change 
    }); 
+0

謝謝。但它不適合我。 –

+0

在以前的代碼中關閉聊天窗口時,local-messages param是空的。然後當時用戶重新打開聊天,以及local-param爲空,一旦用戶刷新瀏覽器,然後「卸載事件」將再次將CHAT_MSG_LOCAL中可用的數據保存到本地存儲中,頁面刷新數據再次通過retriveLocalData()在document.ready中調用。因此清除CHAT_MSG_LOCAL = [];必須解決我們的問題。你可以請附上確切的js文件。非常感謝 –

+0

需要我的代碼修復。現在它的工作。標記爲已採取的答案。謝謝@amit wadhwani –

相關問題