Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/08/2012, 10:39
Avatar de waldragon
waldragon
 
Fecha de Ingreso: mayo-2010
Mensajes: 735
Antigüedad: 14 años
Puntos: 55
Respuesta: desactivar codigocon window.onload

En realidad no estoy usando setinterval para actualizar el div del chat, uso este codigo que encontre por ahi:

Código Javascript:
Ver original
  1. <script>
  2. function refreshDivs(divid,secs,url)
  3. {
  4.  
  5. // define our vars
  6. var divid,secs,url,fetch_unix_timestamp;
  7.  
  8. // Chequeamos que las variables no esten vacias..
  9. if(divid == ""){ alert('Error: escribe el id del div que quieres refrescar'); return;}
  10. //else if(!document.getElementById(divid)){ alert('Error: el Div ID selectionado no esta definido: '+divid); return;}
  11. else if(secs == ""){ alert('Error: indica la cantidad de segundos que quieres que el div se refresque'); return;}
  12. else if(url == ""){ alert('Error: la URL del documento que quieres cargar en el div no puede estar vacia.'); return;}
  13.  
  14. // The XMLHttpRequest object
  15. var xmlHttp;
  16. try{
  17. xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
  18. }
  19. catch (e){
  20. try{
  21. xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
  22. }
  23. catch (e){
  24. try{
  25. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  26. }
  27. catch (e){
  28. alert("Tu explorador no soporta AJAX.");
  29. return false;
  30. }
  31. }
  32. }
  33. // Timestamp para evitar que se cachee el array GET
  34. fetch_unix_timestamp = function()
  35. {
  36. return parseInt(new Date().getTime().toString().substring(0, 10))
  37. }
  38. var timestamp = fetch_unix_timestamp();
  39. var nocacheurl = url+"?t="+timestamp;
  40. // the ajax call
  41. xmlHttp.onreadystatechange=function(){
  42. if(xmlHttp.readyState==4){
  43. document.getElementById(divid).innerHTML=xmlHttp.responseText;
  44. setTimeout(function(){refreshDivs(divid,secs,url);},secs*1000);
  45. //actualizarListdos();
  46. }
  47. }
  48. xmlHttp.open("GET",nocacheurl,true);
  49. xmlHttp.send(null);
  50. }
  51. // LLamamos las funciones con los repectivos parametros de los DIVs que queremos refrescar.
  52. window.onload = function startrefresh(){
  53. refreshDivs('div1',1,'datos.php');
  54. }
  55. </script>

Funciona bien, pero me gustaria hacer que cuando uno de los dos se desconecte, el div deje de actualizarse, para ahorrarme algunas consultas innecesarias a la base de datos, crees que se podria hacer algo para cancelar este SCRIPT ?

Aunque si supieras como hacerlo con setinterval podria usar la solucion que me diste en el primer mensaje, tiene que hacer consultas a la base de datos, gracias.