Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    "Ahah" Script per refresh chat

    Sulla rete ho trovato questo script


    codice:
    function ahah(url, target) {
    
              document.getElementById(target).innerHTML = 'caricamento dati in corso...';
              if (window.XMLHttpRequest) {
                    req = new XMLHttpRequest();
              } else if (window.ActiveXObject) {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
              }
              if (req) {
                    req.onreadystatechange = function() {
                            ahahDone(url, target);
                    };
                    req.open("GET", url, true);
                    req.send("");
    
      }
    
    }
    
    function ahahDone(url, target) {
      if (req.readyState == 4) {
        if (req.status == 200) {
          document.getElementById(target).innerHTML = req.responseText;
        } else {
          document.getElementById(target).innerHTML="ahah error:\n"+req.statusText;
        }
      }
    }
    che sembra fare bene il suo lavoro, però se provo a far si che lo stesso venga richiamato in un certo intervallo di tempo, prima o poi ricevo un errore di memoria esaurita. Ora quello che mi è venuto in mente è che le richieste possono sovrapporsi più velocemente di quanto vengano eseguite, e che è inutile caricare di nuovo la pagina se non è stata modificata nel frattempo.

    Quello di cui ho bisogno è uno script che faccia aggiornare la pagina solo se il file della chat è stato effettivamente modificato. Oppure, se ne conoscete, qualche soluzione più efficiente
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    La tua analisi mi sembra corretta, solo che non ci sono le conclusioni, ossia qualla di non utilizzare quella orribile funzione

    Guardando negli esempi che ho archiviato, ne ho trovato uno che forse si adatta al tuo problema. Utilizza prototype. E' una pagina server perciò prendi il codice javascript ignorando il resto. Come vedi, il cuore è la funzione di callback, showResponse, dove viene richiamato il setTimeout. Quella funzionaccia, l'innominabile, si libera proprio del cuore, la callback: ecco perchè non funzionerà mai nella realtà. Ciao

    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="news.aspx.vb" Inherits="prove_a" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
        <link href="../../../../App_Themes/Tema1/StyleSheet.css" rel="stylesheet" type="text/css" />
        
        <script type="text/javascript" src="../../../../js/prototype.js"></script>
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    window.onload = function()
    {
        window.setTimeout(aggiorna_marquee, 10000);
    }
    
    function aggiorna_marquee()
    {
        var url_action = "?comando_ajax=aggiorna_marquee";
        var parametri = "";
        
        new Ajax.Request(url_action, { onComplete:showResponse, parameters:parametri } );
        function showResponse(originalRequest)
        {
            var t = originalRequest.responseText;
    		$("mr_1").innerHTML = t;
    		window.setTimeout(aggiorna_marquee, 10000);
    		
    		
        }
    
    }
    
    function aggiungi_new()
    {
        $("div1").innerHTML = "<img alt=\"attendere...\" src=\"../../../../immagini/indicator.white.gif\" />";
        var url_action = "?comando_ajax=aggiorna_new";
        var parametri = "p_new=" + encodeURIComponent($("TextArea1").value);
        
        new Ajax.Request(url_action, { onComplete:showResponse, parameters:parametri } );
        function showResponse(originalRequest)
        {
            var t = originalRequest.responseText;
    		$("div1").innerHTML = t;
        }
    
    }
    
    
    // ]]>
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <marquee id="mr_1" runat="server" direction="up" scrolldelay="100" scrollamount="1" style="background-color:Bisque" ></marquee>
            
    
            
    
            <textarea id="TextArea1" style="width: 571px; height: 275px"></textarea>
            Aggiungi new
            <div id="div1">[img]../../../../immagini/indicator.white.gif[/img]</div>
        </div>
        
        </form>
    </body>
    </html>
    Pietro

  3. #3
    Ho capito, lascio perdere questa funzione...solo che, mi dici di usare prototype ma in nella pagina che hai postato c'è solo il link al js

    codice:
     <script type="text/javascript" src="../../../../js/prototype.js"></script>
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da valepu
    Ho capito, lascio perdere questa funzione...solo che, mi dici di usare prototype ma in nella pagina che hai postato c'è solo il link al js

    codice:
     <script type="text/javascript" src="../../../../js/prototype.js"></script>

    http://www.prototypejs.org/
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.