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

📄 ajax_im.js

📁 ajax 聊天室,实现多人聊天,无刷新!
💻 JS
📖 第 1 页 / 共 4 页
字号:
               createIMWindow(room.toLowerCase(), room.toLowerCase());
            } else {
               if(!IMWindows[room].isVisible()) {
                  IMWindows[room].show();
                  setTimeout("scrollToBottom('" + room + "_rcvd')", 125);
               }
            }
            var users = xh.responseText.parseJSON().users;
            if(!$(room.replace(/\s/, '_')+'_group')) addGroupToList(room);
            for(var i=0; i<users.length; i++) {
               if(!$(users[i]+'_blItem')) addBuddyToList(users[i], room);
            }
            Windows.close('newRoom');
            IMWindows[room].toFront();
            setTimeout("$('"+room+"_sendBox').focus()", 125);
         }
		  });
}

function leaveRoom(room){
   var xhConn = new XHConn();
   xhConn.connect(pingTo, "POST", "call=leaveroom&from="+user+"&pwd="+pass+"&room="+room,
      function(xh) {
         if(xh.responseText=='left')
            deleteGroupFromList(room);
      });
}

function keyHandler(e, name) {
   var asc = document.all ? event.keyCode : e.which;
   
   if(asc == 13) {
      sendMessage(name);
      return false;
   }
   
   return true;
}

function loginHandler(e) {
   var asc = document.all ? event.keyCode : e.which;
   if(asc == 13) login();
   return asc != 13;
}

function destroyIMWindow(name) {
   var toKill = $(name);
   toKill.parentNode.removeChild(toKill);
}

function addBuddyToList(username, groupname) {
   if(!$(groupname.replace(/\s/, '_') + '_group')) addGroupToList(groupname);

   var groupList = $(groupname.replace(/\s/, '_') + '_group');

   groupList.innerHTML += '<li id="'+username+'_blItem" class="buddy" onmousedown="clickBuddy(\''+username+'\');return false;" onselectstart="return false;" onmouseover="selectBuddy(this, \''+username+'\', true);" onmouseout="selectBuddy(this, \''+username+'\', false);" ondblclick="onBuddyDblClick();">&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/online.png" width="16" height="16" alt="" id="'+username+'_blImg">&nbsp;'+username+'</li>';
   $(username + '_blItem').style.listStyleType = 'none';
}

function moveBuddy(username, groupname) {
   if(groupname == null) return;
   if($(username+'_blItem').parentNode.id == $(groupname.replace(/\s/, '_') + '_group')) return;
   if(!$(groupname.replace(/\s/, '_') + '_group')) addGroupToList(groupname);
   
   $(groupname.replace(/\s/, '_') + '_group').insertBefore($(username+'_blItem'), null);
}

function addGroupToList(groupname) {
   var bList = $('buddylist');
   
   bList.innerHTML = (groupname=='Offline' ? bList.innerHTML : '') + '<li id="' + groupname.replace(/\s/, '_') + '_groupTop" class="groupTop" onmousedown="return false;" onselectstart="return false;" onclick=" toggleGroup(\'' + groupname + '\');"><img id="' + groupname.replace(/\s/, '_') + '_groupArrow" src="images/' + windowCSS + '/arrow.png" />&nbsp;&nbsp;' + groupname + 
                     (groupname!='Offline' ? ' <a href="#" class="delLink" onclick="remove_group_dialog(\'' + groupname + '\');return false;"><img src="images/' + windowCSS + '/smallx.png" style="border:0;" onmouseover="buttonHover(this);" onmouseout="buttonNormal(this);" /></a>' : '') + '</li>' + "\n" + '<ul id="' + groupname.replace(/\s/, '_') + '_group" class="group"></ul>' + (groupname!='Offline' ? bList.innerHTML : '');
}

function toggleGroup(groupname) {
   var groupList = $(groupname.replace(/\s/, '_') + '_group');
   var groupArrow = $(groupname.replace(/\s/, '_') + '_groupArrow');
   
   if(groupList.style.display != 'none') {
      groupList.style.display = 'none';
      groupArrow.src = 'images/' + windowCSS + '/arrow_up.png';
   } else {
      groupList.style.display = 'block';
      groupArrow.src = 'images/' + windowCSS + '/arrow.png';
   }
}

function selectBuddy(sel, username, selected) {
   if(selected === false) {
      if(curSelected != username) {
         sel.style.background = '#fff';
         sel.style.color = '#333';
      } else {
         sel.style.background = '#d0dae6';
         sel.style.color = '#000';
      }
   } else {
      sel.style.background = '#e1ebf7';
      sel.style.color = '#000';
   }
}

function clickBuddy(username) {
   if(curSelected.length > 0) {
      var sel = $(curSelected + '_blItem');   
      sel.style.background = '#fff';
      sel.style.color = '#333';
   }
   
   curSelected = username;
   
   sel = $(curSelected + '_blItem');
   sel.style.background = '#d0dae6';
   sel.style.color = '#333';
}

function onBuddyDblClick() {
   if(curSelected.length > 0) {
      if(!$(curSelected + '_im')) {
         createIMWindow(curSelected, curSelected);
      } else {
         if(IMWindows[curSelected].popup) {
            if(IMWindows[curSelected].popup.closed) {
               IMWindows[curSelected] = IMWindows[curSelected].old;
               IMWindows[curSelected].show();
            } else {
               IMWindows[curSelected].popup.focus();
            }
         } else if(!IMWindows[curSelected].isVisible()) {
            IMWindows[curSelected].show();
            IMWindows[curSelected].toFront();
            setTimeout("scrollToBottom('" + curSelected + "_rcvd')", 125);
            setTimeout("$('" + curSelected + "_sendBox').focus();", 250);
         } else {
            IMWindows[curSelected].toFront();
            setTimeout("$('" + curSelected + "_sendBox').focus();", 250);
         }
      }
   }
}

function scrollToBottom(id) {
   $(id).scrollTop = $(id).scrollHeight - $(id).clientHeight;
}

function deleteBuddyFromList(username) {
   if(username.indexOf('_group') != -1) {
      deleteGroupFromList(username.substring(0, username.length - 6));
      return;
   }

   var usernam = username;

   var ingroup, loc;
   for (var group in buddyList) {
      for(var i=0; i<buddyList[group].length; i++) {
         if(buddyList[group][i] == username) {
            ingroup = group;
            loc = i;
            break;
         }
      }
   }

   var buddyToRmv = $(usernam+"_blItem");
   if(typeof(buddyToRmv) !== 'undefined') {
      buddyToRmv.parentNode.removeChild(buddyToRmv);
      if(buddyList[ingroup]) {
         buddyList[ingroup].splice(loc, 1);
         saveBuddyList();
      }
      Dialog.closeInfo();
   }
}

function deleteGroupFromList(groupname) {
   var groupNoSpaces = groupname.replace(/\s/, '_');
   var groupToRmv = $(groupNoSpaces+"_group");
   var groupTop   = $(groupNoSpaces+"_groupTop");
      
   if(typeof(groupToRmv) !== 'undefined') {
      groupToRmv.parentNode.removeChild(groupToRmv);
      groupTop.parentNode.removeChild(groupTop);
      delete buddyList[groupname];
      saveBuddyList();
      Dialog.closeInfo();
   } else {
      $('deletebuddy_error_msg').innerHTML = 'No such group on buddylist!';
      $('deletebuddy_error_msg').show();
      Dialog.win.updateHeight();
   }
}

function addNewBuddyToList(username, groupname) {
   if(!inArray(buddyList, username) && !$(username + '_blItem')) {      
      var xhConn = new XHConn();
      
      xhConn.connect(pingTo, "POST", "call=isuser&from="+user+"&pwd="+pass+"&username="+username, function(xh) {
         if(xh.responseText == 'not_exists') {
            $('newbuddy_error_msg').innerHTML = 'No such user is registered!';
         } else {
            if(!$(groupname.replace(/\s/, '_') + '_group')) {
               addGroupToList(groupname);
               buddyList[groupname] = [];
            }
            
            addBuddyToList(username, 'Offline');
            
            if(parseInt(xh.responseText) == 0) {
               moveBuddy(username, 'Offline');
               $(username+'_blImg').src = 'images/offline.png';
            } else if(parseInt(xh.responseText) == 2) {
               moveBuddy(username, groupname);
               $(username+'_blImg').src = 'images/away.png';            
            } else {
               moveBuddy(username, groupname);
               $(username+'_blImg').src = 'images/online.png';
            }
            
            buddyList[groupname][buddyList[groupname].length] = username;
      
            saveBuddyList();
            Windows.close('newBuddy');
         }
      });
   } else {
      $('newbuddy_error_msg').innerHTML = 'User is already on your buddy list!';
   }
}
      
function trim(text) {
   if(text == null) return null;
   return text.replace(/^[ \t]+|[ \t]+$/g, "");
}

function saveBuddyList() {  
   var xhConn = new XHConn();
   xhConn.connect(pingTo, "POST", "call=save&from="+user+"&pwd="+pass+"&list="+encodeURIComponent(buddyList.toJSONString()), null);
}

function resetPass() {
   var xhConn = new XHConn();
   var error = '';
   
   xhConn.connect(pingTo, "POST", "call=reset&from="+$('resetto').value.replace(/@/, '+AT+').replace(/\./, '+DOT+').replace(/ /, ''),
      function(xh) {
         if(xh.responseText == 'pw_reset') {
            Dialog.alert('<span class="dialog_long_label">Your new password has been emailed to ' + $('resetto').value + '</span><div style="clear:both"></div>',
                         {windowParameters: {className:alertCSS, width:alertWidth},
                          ok:function(win) { clearInputs(); Dialog.closeInfo(); login_dialog(); }});
         } else if(xh.responseText == 'no_email_on_record') {
            error = 'There is no such email address for any username on record.';
         } else {
            error = 'There has been a problem resetting your password.<br />Please try again later.';
         }
         $('forgotpass_error_msg').innerHTML = error;
         $('forgotpass_error_msg').style.display = 'block'; 
         new Effect.Shake('modal');
      }
   );
}

function changePass() {
   var currentPw = $('currentpw').value;
   var newPw = $('newpw').value;
   var error = '';
   if(hex_md5(currentPw) == pass) {
      if(newPw == $('confirmpw').value) {
         var xhConn = new XHConn();
         
         xhConn.connect(pingTo, "POST", "call=pwdchange&from="+user+"&pwd="+hex_md5(currentPw)+"&newpwd="+newPw,
            function(xh) {
               if(xh.responseText == 'pw_changed') {
                  Dialog.closeInfo();
                  Dialog.alert('<span class="dialog_long_label">The password change was successful!'+"\n"+'Please re-login now.</span><div style="clear:both"></div>',
                               {windowParameters: {className:alertCSS, width:alertWidth, height:85},
                                ok:function(win) { Dialog.closeInfo(); Windows.close('changePass'); setTimeout('logout();', 250); }});
               } else if(xh.responseText == 'invalid_pw') {
                  error = 'The "Current Password" you entered is invalid.';
                  $('currentpw').value = '';
               } else if(xh.responseText == 'password_bad_length') {
                  error = 'Passwords must be 4 to 16 characters long!';
                  $('newpw').value = '';
                  $('confirmpw').value = '';
               } else {
                  error = 'There was a problem processing your password change. Please try again later.';
               }
            }
         );
      } else {
         error = 'Your passwords do not match!';
      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -