⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chat.js

📁 用struts,ajax实现的聊天室
💻 JS
📖 第 1 页 / 共 3 页
字号:
    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 + -