El chat ya esta funcionado, pero hay problema al momento de refrescar los divs : div de la sala de chat, div de lista de usuarios que están en el chat
Al comienzo todo anda bien, pero cuando empiezan a conversar varias personas se cuelga la ventana emergente o el navegador o se hace muy lento
En la sala se muestra 255 caracteres de conversación máximo
Por favor ayúdenme a solucionar este problema de que se cuelga el explorador o se pone muy lento
Aquí les paso la dirección donde está el chat, para que ustedes mismo prueben, se darán cuenta del problema.
Muchas gracias
http://www.elsitiodenegocios.com
Aquí les paso el script AJAX
Código HTML:
function objetoAjax(){ var xmlhttp=false; try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ xmlhttp = false; } } if(!xmlhttp && typeof XMLHttpRequest!='undefined'){ xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function ActualizarEstadoUser() { divContenido = document.getElementById("actualizar_estado_user"); var ajax=objetoAjax(); ajax.open("POST", "../clientes/actualizar_estado_user.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send(null); ajax.onreadystatechange=function() { if (ajax.readyState==4) { divContenido.innerHTML=ajax.responseText; } } } function enviarMensaje() { var usu=document.getElementById('idusuario'); var usu=usu.value; var men=document.getElementById('texto'); var men=men.value; ajax=objetoAjax(); ajax.open("POST", "chat.php",true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { consultaMensajes(); LimpiarCampoTexto(); } } ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); ajax.send("usuario="+usu+"&mensaje="+men) } function consultaMensajes() { divContenido = document.getElementById('chatList'); var usu=document.getElementById('idusuario'); var nusuario=document.getElementById('nusuario'); var usu=usu.value; var nusuario=nusuario.value; var ajax=objetoAjax(); ajax.open("POST", "consulta.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("usuario="+usu); ajax.onreadystatechange=function() { if (ajax.readyState==4) { divContenido.innerHTML=ajax.responseText; } } //cada 3 segundos consulta por nuevos mensajes setTimeout('consultaMensajes();',3000); } //Actualiza el la conversación window.onload = function (){ consultaMensajes(); ListaUserSesion(); } function ListaUserSesion() { divlist_usuarios = document.getElementById('list_usuarios'); var ajax=objetoAjax(); ajax.open("POST", "lista_user_activo_sesion.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("v="+1); ajax.onreadystatechange=function() { if (ajax.readyState==4) { divlist_usuarios.innerHTML=ajax.responseText; } } //cada 3 segundos consulta por nuevos mensajes setTimeout('ListaUserSesion();',3000); } //Al pulsar tecla ENTER envia el mensaje function pulsar(e) { var evento=e.keyCode || e.wich; if(evento==13) { enviarMensaje(); //scrol(); ListaUserSesion(); return false; } return true; } function LimpiarCampoTexto() { var men=document.getElementById('texto'); var men=men.value=""; document.getElementById('texto').focus(); return; } //Control de scroll //function scrol() onload=function(){ //ListaUserSesion();//function para actualizar usuarios de la lista setInterval(function(){if(window.parar)return;document.getElementById('chatList').scrollTop=document.getElementById('chatList').scrollHeight},30); }
Código HTML:
<body onunload="ActualizarEstadoUser()"> <div id="contenidoweb"> <div id="cabecera"> <div id="publicidad"></div> <div id="barramenu"> <div id="logo"> <img src="../images/logo.gif" border="0" width="340" height="63" alt="El Sitio de Negocios"/> </div> </div> </div> <div style="padding-left:10px; padding-left:10px; padding-top:5px;"> <table width="800" border="0" cellspacing="0" cellpadding="0" align="center" > <tr> <td style="padding-left:0px; padding-top:0px;"> <div id="chatList" style="overflow:auto; width:600px; height:354px; padding-left:3px; padding-right:3px; border:2px solid; color:#CCCCCC;" onMouseOver="parar=1" onMouseOut="parar=0"><?php require_once('consulta.php');?> </div> <div> <textarea name="texto" id="texto" rows="1" cols="50" style="width:608px; height:42px;" onKeyPress="pulsar(event);" class="TextoContenido"></textarea> <input type="submit" name="Submit" value="Enviar" onClick="javascript:enviarMensaje();"> <input name="idusuario" type="hidden" id="idusuario" value="<?php echo $_SESSION['idcliente'];?>"> <input name="nusuario" type="hidden" id="nusuario" value="<?php echo $_SESSION['login'];?>"> </div> </td> <td valign="top" style="padding-top:0px; padding-left:1px; padding-right:0px;"> <div id="list_usuarios" style="overflow:auto; width:200px; height:354px; padding-left:3px; padding-right:3px; border:2px solid; color:#CCCCCC;"><?php require_once('lista_user_activo_sesion.php');?></div> </td> </tr> </table> <div id="actualizar_estado_user"></div> </div> </body>