编程解决聊天室刷新问题
编写聊天室程序时,通常,我们有两种把服务器数据传到浏览器的方式。一种是在服务器端有信息后,把信息推到客户端,这种方式使服务器的负载比较重;另一种就是在客户端用refresh命令进行刷新,大多数的聊天室都采用这种方式,这就使得我们在浏览器上看到屏幕在不断地刷新,非常影响浏览,在网速慢的时候这种情况更为严重。
有没有好的办法能够解决这个问题呢?答案是肯定的。下面笔者就给大家介绍一种用javascript来解决这种问题的方法。本方法虽然不是最好,但简单易行,感兴趣的读者不妨一试。
首先,我们把网页分成三帧。上面一帧为main.htm,用来显示聊天的内容;下面一帧为bottom.htm,用来输入聊天内容。然后,再增加一个隐藏帧list.asp,这个帧的作用就是使得输入的信息能够在main.htm帧中显示出来。以下是聊天室的源程序。
frame.htm源程序如下:
〈html〉
〈head〉
〈title〉asp酷聊天室〈/title〉
〈meta http-equiv="content-type" content="text/html; arset=gb2312"〉
〈/head〉
〈frameset rows="0,403,92" cols="*"〉
〈frame src="list.asp" name="list"〉
〈frame src="main.htm" name="main1"〉
〈frame src="bottom.htm"〉
〈/frameset〉
〈noframes〉
〈body bgcolor="#ffffff"〉
〈/body〉〈/noframes〉
〈/html〉
main.htm源程序如下:
〈html〉
〈head〉
〈title〉聊天内容显示区〈/title〉
〈meta http-equiv="content-type" content="text/html; charset=gb2312"〉
〈/head〉
〈body bgcolor="#ffffff"〉
〈/body〉
〈/html〉
bottom.htm源程序如下:
〈html〉
〈head〉
〈title〉聊天内容录入区〈/title〉
〈meta http-equiv="content-type" content="text/html;charset=gb2312"〉 〈/head〉
〈body bgcolor="#ffffff"〉
〈form name="form1" method="post" action="list.asp" target="list"〉
〈div align="center"〉
〈input type="text" name="comment"〉
〈input type="submit" name="submit" value="写写看"〉
〈/div〉
〈/form〉
〈/body〉
〈/html〉
list.asp源程序如下:
〈script language="javascript"〉
function scrollon(){
top.main1.scroll(0, 65000);
}
top.main1.document.write(‘〈=request("comment")〉’)
top.main1.document.ite‘〈br〉’)
〈/script〉
用上面的方法在输入聊天内容时,在聊天室显示区中,用户就可以看到内容一行一行向下写,而没有出现屏幕不断刷新的情况。大家只要改变list.asp,就可以从数据库中或者从application对象中得到聊天内容了。只是有可能list.asp需要刷新,但是对于在聊天室中聊天的人来说,聊天内容是一行一行向下移动的,他们是感觉不到屏幕刷新的。