Ver Mensaje Individual
  #14 (permalink)  
Antiguo 10/06/2008, 05:22
guybrush78
 
Fecha de Ingreso: febrero-2005
Ubicación: Cádiz
Mensajes: 50
Antigüedad: 19 años, 9 meses
Puntos: 2
De acuerdo Respuesta: ZiTALK v3.2 - xHTML/Javascript/PHP/MySQL Ajax Chat

Cita:
Iniciado por ZiTAL Ver Mensaje
no no hay formulario para registro de usuarios, de todas formas al parecer no funciona del todo bien, cuando tenga tiempo lo sigo mirando. Lo cojonudo es que funciona hasta en IE6 y en firefox no, manda cojones :(
Funciona en todos menos en firefox, y creo haber dado con el conque:

Código PHP:
function ajaxWrite()
 {
     if(
lastSpanId==-1// if lastSpanId is -1 the chat is loading you can't send message 
      
{
       return 
false;
      }
       
sending=true// if message is sending the chat stop loading for syncronyzing reasons
       
var comment document.getElementById('zitalk_comment');
       var 
loading=document.getElementById('loading');
       var 
ajax = new ajaxFunction();
       
ajax.open("POST",pagename+"?Write=yes",true); // call to zitalk with Write variable
       
ajax.setRequestHeader("Content-Type""application/x-www-form-urlencoded"); // Ajax POST header
       
ajax.onreadystatechange=function() 
      {
        if (
ajax.readyState==4// The request is complete
         
{
            if (
ajax.status==200// Response successfull
             
{
               
loading.innerHTML=''// hide loading message            
               
sending=false// finish saving comment, the chat can load normally            
               
sending=false// finish saving comment, the chat can load normally
               
comment.value=''// empty comment box
               
comment.focus(); // focus comment box
             
}
         }
        else
         {        
          
loading.innerHTML='Sending message...';  //show loading message
         
}
      }    
    
ajax.send("comment="+comment.value); // to send php $_REQUEST variables 
 

Código PHP:
function pulse(hau,e)
 {
    var 
evt event;
    var 
key window.Event evt.which evt.keyCode;
    
//var comment=document.getElementById('zitalk_comment');
    
var chat=document.getElementById('chat');
    var 
comment trim(hau.value);
    if(
key==13// return key
     
{
        if(
comment=='')
         {
            
hau.focus();
            return 
false;
         }
        else
         {
            if(
sending==true)
             {
                return 
false;
             }
            else
             {
                
//ajaxWrite();
                
ajaxWrite();
             }
            return 
false;
         }
     }
     return 
false;
 } 
Las llamadas a ajax.open parece que en firefox tiene problemas al decirle que sea false (sincrono), pasa de actualizar y no sigue escuchando, si pones true(asincrono) sigue escuchando y lo pone bien, así parece que ya va en todos.

Lo de carga asincrona en realidad no crea conflictos con la sincronía que has montado para los mensajes, ya que se controla por variables como "sending", la asincronía es solo en la carga.

Espero haber ayudado.