4、刪除一個用戶
- function del(str)
- {
- for(var i=0;i<list.length;i=i+1)
- if(list[i]==str)
- {
- delete list[i];
- count--;
- }
- }
5、增加一個用戶
- function add(str1,str2)
- {
- var l=list.length;
- for(var i=0;i<list.length;i=i+1)
- //如果已經在數組里面則返回
- if(list[i]==str1)
- return;
- //增加一個用戶
- list[l]=str1;
- count++;
- }
6、更新聊天人數的方法,定時器的使用
- var timerID=null;
- var timerRunning=false;
- function stop()
- {
- //停止
- if(timerRunning)clearTimeout(timerID);
- timerRunning=false;
- }
- function start()
- {
- stop();
- //調用更新在線人數的程序
- write1();
- }
- function write1()
- {
- ... ... ... ...
- //設定更新時間,
- timerID=setTimeout("start()",30000);
- timerRunning=true;
- }
這種方法比較簡單的實現了在線人數的顯示,當然也可以使用讀入在線人文件的方法顯示在線人數,不過在改變聊天對象是會比較麻煩.
顯示:現在的www聊天室基本全部采用框架方式,可以用frame也可以用iframe看個人喜歡了,我的采用frame的傳統方式
- print("<frameset rows="*,110,0,0,0" border=0>n");
- print("<frameset cols="660,118" rows="*">n");
- //主顯示屏幕,負責顯示聊天內容
- print("<frame name=u src=about:blank frameborder="NO" noresize>n");
- //在線人數屏幕
- print("<frame name=r src="about:blank" frameborder="NO">");
- print("</frameset>n");
- //發送信息的屏幕,信息指揮中心,所有指令都要由這里發出
- print("<frame name=d src=send.php?name=$name&&pass=$pass scrolling='no
- ' frameborder="NO" noresize>n");
- //被動更新屏幕,處理發送的信息
- print("<frame src="about:blank" name="bl">n");
- /主動更新屏幕,顯示自己和其他聊友的聊天信息
- print("<frame src="about:blank" name="flush">n");
- //檢測是否在線的屏幕,對于異常離開,如死機,掉線等的處理
- print("<frame src="about:blank" name="check">n");
- print("</frameset>n");
因為各個頁面之間的程序有聯系,所以顯示順序很重要,可以看到,我這里只有發送頁面不是about:blank,其他頁面的顯示都要先通過發送頁面的調用才能開始.
指揮中心
這里是聊天室的指揮中心,所有的指令都要在這里發出
1、下面是基本的發送表單代碼
- <form name=inputform action='messagesend.php' target='bl' onsubmit='return(checksay());' method=POST>
- <?
- //下面的2個參數用于驗證信息的正確性
- print("<input type='hidden' name='name' value='$name'>n");
- print("<input type='hidden' name='pass' value='$pass'>n");
- ?>
- //聊天對象,注意加上 readonly 屬性
- <input type="text" name="talkto" size="10" maxlength="20" readonly value="所有人">
- //上次聊天的發送內容
- <input type='hidden' name='message' value=''>
- //發送的表單文本框
- <input type="text" name="msg" maxlength="120" size="34">
- <input type="submit" name="Submit" value="發送">
- </form>
2 檢查發送內容的js
- var dx ='';
- function checksay( )
- {
- //不允許發送空的發言
- if(document.inputform.msg.value=='')
- {
- document.inputform.msg.focus();
- return false;
- }
- //不允許重復發言,內容相同,對象相同
- if ((document.inputform.msg.value==document.inputform.message.value)
- &&(document.inputform.talkto.value==dx))
- {
- alert('發言不能重復');
- document.inputform.msg.focus();
- return false;
- }
- //兩次發言內容的間隔不能小于1秒,或者發言字數大于間隔*3
- t2=(new Date()).getTime()/1000;
- if(((t2-t1)<1)||((t2-t1)*3<document.inputform.msg.value.length))
- {
- document.inputform.msg.focus();
- return false;
- }
- //更新時間
- t1=t2;
- document.inputform.showsign.value=1;
- //保存上次發言內容
- document.inputform.message.value =document.inputform.msg.value;
- //清空發言內容
- document.inputform.msg.value ='';
- //保存發言對象
- dx=document.inputform.talkto.value;
- //定位焦點
- document.inputform.msg.focus();
- //返回
- return(true);
- }
新聞熱點
疑難解答