最小化按钮:
function changemin()
{
document.getElementById("eMsg").innerHTML=minstr; //变换系统区域内容
if(objTimerout) window.clearTimeout(objTimerout);//停止获得聊天记录函数
OnlineNum();//启动在线人数统计
}
还原按钮:
function changemax()
{
document.getElementById("eMsg").innerHTML=maxstr; //变换系统区域内容
document.getElementById("nc").value=nc; //获得呢称
getChat(); //获得聊天记录
}
十四、服务器连结文件 conn.asp
<%
dim conn
dim connstr
dim db
db="main.mdb" '数据库文件位置
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
Function del1(s) 'IE时处理函数
del1=left(s,len(s)-1)
end function
Function StreamToStr(sStream) 'Firefox下编码转换
dim dr
Set dr=Server.CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=2
dr.Open
dr.Charset="GB2312"
dr.Position=0
dr.WriteText sStream
dr.Position=0
dr.Charset="UTF-8"
StreamToStr=dr.ReadText
StreamToStr= left(StreamToStr,len(StreamToStr)-1)
dr.Close
Set dr=Nothing
End Function
%>
十五、Firefox兼容处理
程序第一次测试时并不能在Firefox中正常运行,因为懒羊很少用Firefox,所以一直未在其环境下测试,后来与小编聊天时才发现这个问题,于是对程序作了调整,对于修改部分程序中已经用红色标注出来,下面就针对标注的知识点作一个简单的介绍。
1、 IE:document.getElementById("eMsg").style.top =document.documentElement.clientHeight - divHeight + parseInt(document.documentElement.scrollTop,10);
Firefox:document.getElementById("eMsg").style.top =(document.documentElement.clientHeight - divHeight + parseInt(document.documentElement.scrollTop,10))+"px";
IE中后面可以不加单位“px”而Firefox中却不可以,或许Firefox没IE智能吧,因此为了兼容干脆全部加上。
2、 CSS样式文件中在对.gn ul{margin:0;padding:0;list-style:none;}进行定义时,刚开始并没使用padding:0这条语句,然而在Firefox却转了行,原来Firefox只认识padding,因此我们在设置类似样式时,为了兼容起见可以将margin与padding全部设置为零。
3、 在信息发送采用快捷键时,原来的语句很简单,并没有如程序中作出判断:
if((event.keyCode==83)&&(event.altKey)){sendMessage();}
然而Firefox并不认可event.KeyCode,而必须采用event.which
var keycode = event.keyCode?event.keyCode:event.which?event.which:event.charCode;
keyCode用于返回的是功能键的编码
charCode用于返回数字和字符键的编码
which包含keyCode和charCode两种情况
4、 我们通过xmlDOM获得某一个节点具体值时,原来采用chatinfo[i].childNodes(0).text,然而在Firefox中对于.text并不支持,因此我们将代码改为
var nc=chatinfo[i].childNodes[0].firstChild.data;
还有一点值得注意,在表现数组时IE中可以用“( )”,而在Firefox中必须采用“[ ]”。
5、 编码要求
这一点算是最让懒羊头疼的了,原来程序全部采用GB2312,我们知道xmlhttp默认是以utf-8,但IE或许有一定的免役能力,能够识别,然而Firefox中却不可以,每次提交信息后添加到数据库时全部变成乱码,因此我们在后台不得不通过程序对传过来的参数进行编码转换,从UTF-8转为GB2312再存入数据库,具体的编码转换函数见conn.asp文件中的StreamToStr函数。然而有一点懒羊也不是很明白,为何在传递时非得加一个字符,因此就出现了前面的loadXML("get","quit.asp?frompage="+frompage+"a&b="+b+"&nc="+
这样的语句,当然在如果是在IE中服务器端同样也要通过del1对字符串进行处理去掉传递过来的那个字符。这里懒羊采用的方法比较笨,如果大家有好的方法不妨试一试。
至此,所有的开发过程也就讲完了,你只需将客户端代码合成文件lanyangpl.js,然后目标网页通过以下语句调用即可使用:
<script src="interface.js"></script>
<script src="xml.js"></script>
<script src="lanyangpl.js"></script>
注意,请将代码段放置body内,特别是interface.js必须放进body内。
或许细心的朋友发现,此程序与新浪的woocall并不相同,woocall界面采用flash完成,当然有能力的朋友也可以通过flash去开发一个页面聊天系统,本教程中的所有代码可以正常运行,但离真正投入使用还有一段距离,希望大家在学习的过程在再加以完善,如果大家做出好的版本也请发给懒羊学习学习。