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);
- }
新闻热点
疑难解答