作者:網絡之門 上兩節介紹了如何處理聊天室內的談話內容以及悄悄話的特殊處理,至此。我們去看看談話內容是如何在客戶端顯示出來的。請先看看我們的顯示對話文件(top.asp) *top.asp <% @language="vbscript" %> <% Response.Expires=0 'response.buffer=true %> <meta http-equiv="refresh" content="2.5"> <body bgcolor="<%=application("zj_1color")%>" topmargin="0" leftmargin="0"> <I><center><font color="#FFFF00" size=4><%=application("zj_1title")%></font></center></I> <% if session("userzj_1")="" then session("userzj_1")="" session("zj_1level")="" session("zj_1start")="" session("zj_1total")=0 session("zj_1boot")="" session("zj_1counter")=0 session("zj_1open")="" 'session.abandon %> <script LANGUAGE="JavaScript"> parent.location="timeout.htm" </script> <% response.end end if '是否在搗亂? for n=1 to 40 if session("userzj_1")=application("peoplezj_1"&n) then exit for end if if n=40 then session("zj_1boot")="true" %> <script LANGUAGE="JavaScript"> parent.location="boot.htm" </script> <% end if next %> <script LANGUAGE="JavaScript"> <% if session("zj_1counter")<>application("zj_1counter") then if session("zj_1counter")<application("zj_1counter") then for I=session("zj_1counter")+1 to application("zj_1counter") %> parent.middle.document.writeln("<%=application("zj_1chats")(I)%>") <% next else for I=session("zj_1counter") to 20 if application("zj_1counter")<>1 then %> parent.middle.document.writeln("<%=application("zj_1chats")(I)%>") <% end if next for I=1 to application("zj_1counter") %> parent.middle.document.writeln("<%=application("zj_1chats")(I)%>") <% next end if if session("zj_1open")="true" then session("zj_1counter")=application("zj_1counter") end if end if '公告 if session("zj_1public")<>application("zj_1public") then %> parent.middle.document.writeln("<%=application("zj_1public")%>") <% session("zj_1public")=application("zj_1public") end if '有耳語嗎? if session("zj_1chat")<>application("zj_1chat") then if application("zj_1owner")=session("userzj_1") or application("zj_1chatto")=session("userzj_1") or application("zj_1chatto")="ALL" then %> parent.middle.document.writeln("<%=application("zj_1chat")%>") <% end if session("zj_1chat")=application("zj_1chat") end if application("peoplezj_1_appear"&n) count=0 for n=1 to 40 if application("peoplezj_1"&n)<>"" then count=count+1 end if next if session("zj_1total")<>count then session("zj_1total")=count session("zj_1refresh")="true" %> </script> <% end if response.flush %> 聊天室具備了管理(把不受歡迎的人踢出聊天室,公告等的功能,因此與發言處理和悄悄話功能無關的部分小虎不作解說了。 前面我們用了一個application("zj_1counter")的公有對象來保存最新發言所在的緩沖元素。用session("zj_1counter")來保存當前用戶本身已顯示的對話元素。在每次調用top.asp這個文件,只要對比出session("zj_1counter")與application("zj_1counter")的取值不同,就可以得知需要顯示新的交談發言。而每次完成顯示,又必須把兩個計數值統一個。不然就會發生重復顯示對話內容的錯誤了。 又于緩沖區是循環使用的,比如說當前用戶現示的對話內容是存儲在application("chats")(18)中,而新的發言已經重新回到application("chats")(2)了,因此本次需要顯示4條發言,上面的詳細處理解說小虎不做了。大家仔細看看。然后想一想,是很容易明白的。 又于耳語和公共對話application("chat")(n)是分開處理的,因此公有對話處理完畢后,就到了耳語的處理。耳語標志是session("chat")(它用來存儲上一次的耳語內容,當對比出application("chat")本次的耳語內容于上次的不符,就可以得知需要顯示耳語了,當耳語顯示后,別忘了把session("chat")與application("chat")同步哦,不然耳語就在你耳邊“響”個不停,吵死了。。 這里向大家介紹了處理耳語的一種方法,做聊天室的方法很多。好與壞會影響到聊天室的性能(速度。。容錯性等等)。制作一個好的聊天室是很有技巧的。在這一點上。小虎感到自己的聊天室還是做的不算好。有待改進。 本例子的聊天室地址:http://active.t500.net。歡迎大家作客“素素心語 *注程序中的session("zj_1chat")與解說中的session("chat")實際是同一個變量,application("zj_1chats")(n)等也是如此類推。。。麻煩大家留意一下。小虎不去修改程序中的不同之處了
|