2014-11-03 3 views
0

채팅 창을 열거 나 접은 채팅 응용 프로그램을 만들고 있습니다. 그래서 내가 원하는 것은 채팅 창을 열거 나 닫을 지 여부를 저장하는 것입니다. 페이지를 새로 고칠 때 상태가 유지되어야합니다. 그것은 쿠키 또는 세션을 사용하여 수행 할 수 있지만 정확하게 수행하는 방법을 모르겠습니다. 쿠키 나 세션을 사용하여 해당 div의 상태를 저장하려면 어떻게해야합니까? 여기 jquery 코드가 있습니다.페이지로드의 채팅 창 상태 저장

$(document).ready(function(){ 




     $(".shout_msg").click(function(){ 

      var id = $(this).attr('id'); 
      var name = $(this).text(); 
      //var myarray = []; 
      var sender = "<?php echo $user_check?>"; 
      var receiver = name; 

      var detect = detectClick(id); 

      if(!detect){ 
       $('#chatboxcontainer').append("<div id = 'd-"+id+"' class = 'shout_box1'></div>"); 
       $("#d-"+id).append("<div id = 'h-"+id+"' class = 'header1'>'"+name+"'</div>"); 
       $("#h-"+id).append("<div id = 'c-"+id+"' onclick = 'Slide("+id+")' class='close_btn1'>&nbsp;</div>") 
       $("#d-"+id).append("<div id = 't-"+id+"' class = 'toggle_chat1'></div>"); 
       $("#t-"+id).append("<div id = 'm-"+id+"' class = 'message_box1'></div>"); 
       $("#t-"+id).append("<div id = 'u-"+id+"' class = 'user_info1'></div>"); 
       $("#u-"+id).append('<input name = "shout_message" id = "s-'+id+'" type = "text" placeholder = "Type Message Hit Enter" />'); 

       //alert(id); 


       $.ajax({ 

          url: "loadmessage.php", 
          type: "POST", 
          data:{ 
           'sender': sender, 
           'receiver': receiver, 
          }, 

          success: function(response){ 
           var result = JSON.parse(response); 
           console.log("Result is " +result); 
           console.log() 

           for(var i in result){ 
            $("#m-"+id).append('<p class = "shout_msg">' +result[i]+ '</p>'); 
            $("#m-"+id).scrollTop($("#m-"+id)[0].scrollHeight); 
           } 
          } 
         }); 
       } 




      $("#s-"+id).keypress(function(evt) { 
       if(evt.which == 13) { 

        var msg = $("#s-"+id).val(); 
        //msg = msg.replace(":)","<img src = 'smilenew.gif'/>"); 

        var dt = new Date(); 
        var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds(); 

        $("#m-"+id).append('<p class = "shout_msg" id = "'+count+'">'+sender+':'+msg+'<span class = "time">'+time+'</span></p>'); 

        $.ajax({ 

         url: "insertdatanew.php", 
         type: "POST", 
         data:{ 
          'sender': sender, 
          'receiver': receiver, 
          'msg': msg, 
          'time': time 
         }, 

         success: function(result){ 
          if(result == 'Y') 
          alert("Successful insertion"); 
         } 
        }); 


        $("#m-"+id).scrollTop($("#m-"+id)[0].scrollHeight); 
        //count++; 
        $("#s-"+id).val(""); 


       } 

      }); 

     }); 



    }); 

내 코드는 어떻게 보이나요?

+0

. $ (this)를 사용하면 DOM 객체의 jQuery 객체를 반환한다. '$ (this) .attr ("id")'는 this.id를 훨씬 느리게 처리한다. id, title, href, src, text 등등. jQuery는 오버 헤드이다. –

답변

0

이전 브라우저 (특히 IE7 이하)를 지원할 필요가없는 경우 sessionStorage은 이러한 종류의 작업에 적합합니다. 아래 링크는 찾고있는 것과 매우 가까운 예를 제공합니다.

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage#sessionStorage

예 :이 이미 제공

// set the state 
sessionStorage.setItem('chatWindowState', 'closed'); // or 'open' 

// retrieve the state when the page loads 
var chatWindowState = sessionStorage.getItem('chatWindowState'); 
+0

채팅 창 div가 자동으로 생성됩니다. 그래서 내가 동적으로 생성 된 div의 상태를 저장하는 방법에 대해 혼란을 겪고 있습니다. 내 코드에 대한 참조를 도울 수 있습니까? –