📄 chat.js
字号:
if(addRoomMaxUser>100){
window.alert("\"最多人数\"小于100。");
return false;
}
return true;
}
/**********删除房间**********
删除已经存在的房间
room 房间名称
count 房间内在线用户数
****************************/
function delRoom(room){
if(window.confirm("确定删除房间?")==true){ //确认是否删除房间
var url="delRoom.do"; //发送到服务器
var para="room="+room;
var myAjax=new Ajax.Request(url,{method:"post",parameters:para,onComplete:operRoomShow});
}
}
/**********显示操作房间结果**********
添加和删除房间时调用,解析服务器返回的XML文档,并显示服务器的验证结果,
************************************/
function operRoomShow(request){
var has=request.responseXML.getElementsByTagName("roomname")[0].firstChild.data;
if(has=="ok"){ //返回内容为“ok”跳转到成功提示页面,负责提示错误。
window.location.href="success.jsp";
}
else
window.alert(has);
}
/*******************************************************************************************************
* *
* 以下房间内踢人和屏蔽讲话功能 *
* *
********************************************************************************************************/
/*************踢人************
请出房间内的用户
******************************/
function goOutUser(){
var name=$F("receiveUser");
if(name=="所有人"){ //必须有操作的用户
window.alert("请选择对象!");
return false;
}
var url="goOutUser.do";
var para="name="+name;
var myAjax=new Ajax.Request(url,{method:"post",parameters:para,onComplete:null});
}
/**********屏蔽讲话**********
屏蔽房间内用户的发言,使自己不能看到该用户有关的话
*****************************/
function separentUser(){
var name=$F("receiveUser"); //获取屏蔽对象
if(name=="所有人"){
window.alert("请选择对象!");
return false;
}
addSeparentUser(name); //添加到屏蔽对象数组中
}
/**********清除屏蔽**********
清除屏蔽的对象
****************************/
function unseparentUser(){
var name=$F("receiveUser");
if(name=="所有人"){
window.alert("请选择对象!");
return false;
}
removeSeparentUser(name); //从数组中移除
}
/**********清空屏蔽***********
将清除所有屏蔽的对象
******************************/
function cleanSeparentUser(){
count=0; //数组清空
$("msgShow").innerHTML+="<font color='gray'>[系统消息]清空屏蔽!</font><br>";
}
/**********添加屏蔽对象到数组中**********
将屏蔽对象的用户名添加到数组中
name 屏蔽对象用户名
****************************************/
function addSeparentUser(name){
for(var i=1;i<=count;i++){
if(separentUsers[i]==name){ //如已经在数组中则运行
$("msgShow").innerHTML+="<font color='gray'>[系统消息]"+name+"已经被你屏蔽!</font><br>";
return;
}
}
count++; //数组长度加1
separentUsers[count]=name; //将对象加到数组中
$("msgShow").innerHTML+="<font color='gray'>[系统消息]"+name+"被你屏蔽!</font><br>";
}
/**********从数组中清除屏蔽对象**********
将屏蔽对象的用户名从数组中移除
name 屏蔽对象用户名
*********************************/
function removeSeparentUser(name){
var j,i;
var flag=false; //"name"是否已经被屏蔽标志
for(i=1;i<=count;i++){ //查找"name"是否在屏蔽数组中
if(separentUsers[i]==name){ //如在数组中则移除,flag标志设置为true
for(j=i;j<count;j++)
separentUsers[j]=separentUsers[j+1];
separentUsers[j+1]="";
flag=true;
}
}
if(flag){ //真则运行
count=count-1;
$("msgShow").innerHTML+="<font color='gray'>[系统消息]解蔽"+name+"!</font><br>";
}
else{
$("msgShow").innerHTML+="<font color='gray'>[系统消息]你没对"+name+"屏蔽!</font><br>";
}
}
/*******************************************************************************************************
* *
* 其他功能 *
* *
********************************************************************************************************/
/**********聊天室初始化*************
进入聊天室刷新聊天信息和在线用户名列表
**********************************/
function init(){
sendEmptyMsg();
freshUserList();
}
/**********查看最近聊天记录***********
查看最近聊天记录
*************************************/
function nearMsgLook(){
var url="nearMsgLook.do";
var myAjax=new Ajax.Request(url,{method:"post",parameters:null,onComplete:showNearMsg});
}
/**********显示聊天信息**********
解析服务器返回的xml文档为HTML,显示聊天信息
用户信息结构为:
<messages user="userName">
<message sayUser="sayUser" receiveUser="receiveUser" type="type" time="time" color="color">context</message>
</messages>
********************************/
function showNearMsg(request){
//获得XML文档内容
var messages=request.responseXML.getElementsByTagName("nearmessages");
var user=messages[0].getAttribute("user");
var message=messages[0].getElementsByTagName("nearmessage"); //得到信息数组
var msgHTML=""; //公开的信息
//将获得的信息数组循环显示
for(var i=0;i<message.length;i++){
var msg="";
var newHTML=""; //一条信息
var type=message[i].getAttribute("type");//获取类型
var context=message[i].firstChild.data;//获取讲话的内容
var color=message[i].getAttribute("color");
var sayUser=message[i].getAttribute("sayUser");
var receiveUser=message[i].getAttribute("receiveUser");
var time=message[i].getAttribute("time");
/**************解析“{}”中的表情和图片**********
* 如果信息中有"{}"符号则解析
* 其中"{[http... ]}"符号中内容为网络音乐地址
* "{http... }"中内容为网络图片地址
* "{ }" 中为本地地址即表情图片地址
************************************************/
while(context.indexOf("{",0)!=-1){
var low=context.indexOf("{"); //第一组{}
var high=context.indexOf("}");
var addr=context.substring(low+1,high);//获取第一组"{}"的内容
if(addr.indexOf("http")!=-1){ //判断是否是网址,其中"{ }"中为网络图片地址,"{[ ]}"中网络音乐地址
if(addr.indexOf("[")!=-1){ //判断是否包含"[]",有则为音乐地址
var musicAddr=context.substring(low+2,high-1); //获取"[]"中内容
msg+=context.substring(0,low)+"<embed src='"+musicAddr+"' autostart=true width=145 height=60>"; //将"{}"信息前的内容和"{[http...]}"中解析出来的音乐地址相加
}else{
msg+=context.substring(0,low)+"<img src='"+addr+"'></img>"; //将"{}"信息前的内容和"{http...}"中解析出来的图片地址相加
}
}else
msg+=context.substring(0,low)+"<img src='face/"+addr+".gif'></img>";////将"{}"信息前的内容和"{}"中解析出来的本地地址(表情)相加
context=context.substring(high+1,context.length);
}
msg+=context;
//将解析出来的元素最后组成组成一条信完整的信息
if(receiveUser=="所有人"){
newHTML="<font color='blue'><a href=\"javascript:talkTo('"+sayUser+"')\">"+sayUser+"</a></font>("+time+")说:<font color='"+color+"'>"+msg+"</font><br>"
}else
newHTML="<font color='blue'><a href=\"javascript:talkTo('"+sayUser+"')\">"+sayUser+"</a></font>对<font color='blue'><a href=\"javascript:talkTo('"+receiveUser+"')\">"+receiveUser+"</a></font>("+time+")说:<font color='"+color+"'>"+msg+"</font><br>"
//除别人讲的悄悄话且说话者和接受者都不是自己外的信息,显示到公共聊天窗口中
if(!(type=="private"&&sayUser!=user&&receiveUser!=user)){
if(type=="private")//如是"悄悄话"则加"悄悄话"字
msgHTML+="<font color='red'>*悄悄话*</font>"+newHTML;
else
msgHTML+=newHTML;
}
}
$("msgShow").innerHTML=msgHTML; //添加到公共聊天窗口中
$("msgShow").scrollTop=2000; //滚动条自动到底
}
/**********操作成功**********
操作成功提示3秒后跳转
****************************/
function toIndex(){
setTimeout("successReg()",3000);
}
//跳转到主页面
function successReg(){
window.location.href="index.jsp";
}
/**********房间分类查询**********
后台管理,按分类查询建立的房间
************************************/
function queryClassify(){
var queryClassify=$F("queryClassify");
var url="queryClassifyRoom.do";
var para="queryClassify="+queryClassify;
var myAjax=new Ajax.Request(url,{method:"post",parameters:para,onComplete:showqueryClassifyRoom});
}
/**********显示房间分类结果**********
解析服务器返回的XML文档,,
************************************/
function showqueryClassifyRoom(request){
var newHTML="";
//获得XML文档内容
var queryrooms=request.responseXML.getElementsByTagName("queryrooms");
var queryroom=queryrooms[0].getElementsByTagName("queryroom"); //得到信息数组
// window.alert(queryroom);
for(var i=0;i<queryroom.length;i++){
var maxUser=queryroom[i].getAttribute("maxUser");//获取类型
var name=queryroom[i].firstChild.data;//获取讲话的内容
var intr=queryroom[i].getAttribute("intr");//获取类型
newHTML+="<tr><td width='15%'>"+name+"</td><td width='50%'>"+intr+"</td><td width='15%'>"+maxUser+"</td><td width='10%'><a href='editroom.jsp?classify="+$F("queryClassify")+"&room="+name+"&intr="+intr+"&maxUser="+maxUser+"'>编辑</a></td><td width='10%'><a href=\"javascript:delRoom('"+name+"')\">删除</a></td></tr>";
}
$("showClassifyRooms").innerHTML="<table width='70%'>"+newHTML+"</table>";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -