Visualizzazione risultati 1 fino 1 di 1

Discussione: Funzione javascript per tracciare i programmi (magari può servire)

  1. #1
    Data registrazione
    15-04-2012
    Messaggi
    4

    Predefinito Funzione javascript per tracciare i programmi (magari può servire)

    Ho apportato alcune modifiche ad una funzione trovata in rete che visualizzava dei messaggi non usando alert ma la stessa finestra che la usava.
    Prima variazione: Visualizzare di tutti i messaggi su di una nuova finestra.
    Seconda variazione: Possibilità di indentare i messaggi.
    Terza variazione: Possibilità di tracciare i messaggi solo per un certo tipo di codice.

    Inclusione delle funzioni Trace e set_Trace
    Nella sezione <head> inserire <script src="trace.js"></script> (eventualmente modificare il path di src)

    set_Trace(par1)
    par1 = "js" - Traccia solo le funzioni Trace che hanno questo valore come terzo parametro.
    "html" - Traccia solo le funzioni Trace che hanno questo valore come terzo parametro.
    "all" - Traccia tutte funzioni Trace.
    "none" - Non traccia.

    Trace(par1,par2,par3)
    par3 = "js" "html" "all" "none"
    par1 = Messaggio da visualizzare. Se la funzione è usata per debuggare del codice javascript si può
    comporlo ovviamente con le variabili da controllare. In html la funzione può essere usata
    per vedere l'ordine di esecuzione dei tag inserendo <script>Trace(par1,par2,'html')</script>
    par2 = "+" "-" "0"
    Il + ed il -, nelle mie intenzioni, devono essere usati per tracciare l'entrata e l'uscita nelle routines.
    Es: Routine1() { Trace("Routine1","+",'js'); istruzioni javascript; Trace("Routine1","-",'js');}
    Le due chiamate comportano la visualizzazione di -->Routine e <--Routine. Inoltre il +
    incrementerà il livello di indentazione dei prossimi messaggi mentre il - lo diminuirà.

    "0"
    Lascia inalterata l'indentazione dei prossimi messaggi da visualizzare.

    Riassumendo estendendo l'esempio precedente
    Routine1()
    {
    var prova = 10;
    Trace("Routine1","+",'js');
    Trace("Prova = "+prova,"0",'js');
    Routine2();
    Trace("Quello che mi pare","0",'js');
    Trace("Routine1","-",'js');
    }

    Routine2()
    {
    var prova = 20;
    Trace("Routine2","+",'js');
    Trace("Prova = "+prova,"0",'js');
    Trace("Quello che voglio","0",'js');
    Trace("Routine2","-",'js');
    }

    comporterà sulla nuova finestra la seguente messaggistica:
    -->Routine1
    Prova = 10
    -->Routine2
    Prova = 20
    Quello che voglio
    <--Routine2
    Quello che mi pare
    <--Routine1[/FONT]

    P.S. Provato con Mozilla e Chrome. Ho dei problemi con IE

    Questo è il codice di Trace.js

    var tipo_Trace = "all";
    var livello = 0;
    var stringa_livello = " "; // Numero sufficiente di spazi per permettere l'indentazione
    stringa_livello += " "; // Ogni indentazione prende 3 spazi
    var finestra_Trace = null;
    var indentazione = 3;
    if (!finestra_Trace)
    {
    var w = 820;
    var h = 300;
    var l = Math.floor((screen.width-w)/2);
    var t = Math.floor((screen.height-h)/2);
    var parametri = "width="+w+",height="+h+",top=" + t + ",left=" + l + ",menubar=no,toolbar=no,scrollbars=yes,location=no ,status=no,resizable=no"
    finestra_Trace = window.open("","_blank",parametri);
    finestra_Trace.document.write("<html>\n");
    finestra_Trace.document.write(" <head>\n");
    finestra_Trace.document.write(" <title>Trace</title>\n");
    finestra_Trace.document.write(" </head>\n");
    finestra_Trace.document.write("</html>");
    }

    function set_Trace(tipo)
    {
    switch (tipo)
    {
    case 'all':
    case 'html':
    case 'js' : tipo_Trace = tipo; break;
    case 'none': tipo_Trace = tipo; finestra_Trace.close(); break;
    default: alert('set_trace tipo errato'); break;
    }
    }

    /**
    * Questa funzione mostra messaggi di Traceging come semplice testo nella finestra
    * appena creata.
    **/
    function Trace(msg,indent,tipo)
    {
    // Se non è stata ancora creata una finestra nella quale visualizzare
    // i messaggi di Trace, lo si fa ora.
    if (tipo_Trace == "all" || tipo_Trace == tipo)
    {
    if (!Trace.box)
    {
    // Crea un nuovo elemento <div>
    Trace.box = finestra_Trace.document.createElement("div");
    // Specifica l'aspetto utilizzando attributi di stile CSS
    Trace.box.setAttribute("style",
    "line-height: 0em;" +
    "background-color:white; " +
    "font-family:'Courier New', Courier, monospace; " +
    "font-size:11px; " +
    "padding: 0px;");
    // Accoda il nuovo elemento <div> alla fine del documento
    finestra_Trace.document.body.appendChild(Trace.box );
    }

    // Quando si arriva qui, Trace.box si riferisce a un elemento <div> nel quale
    // si possono inserire i messaggi di Trace.
    // Prima si crea un nodo <pre> per contenere il messaggio.
    var pre = finestra_Trace.document.createElement("pre");
    // Ora si crea un nodo di testo che contiene il messaggio, e lo si aggiunge a <pre>
    switch (indent)
    {
    case "+": msg = stringa_livello.substring(0,livello * indentazione)+"-->"+msg; livello += 1; break;
    case "-": livello -= 1; msg = stringa_livello.substring(0,livello * indentazione)+"<--"+msg; break;
    default : msg = stringa_livello.substring(0,livello * indentazione)+msg; break;
    }
    pre.appendChild(finestra_Trace.document.createText Node(msg));
    // E si accoda il nodo <pre> al nodo <div> che contiene l'output di Trace
    Trace.box.appendChild(pre);
    }
    }
    Ultima modifica di radiolanversilia : 30-01-2014 alle ore 16.42.35 Motivo: La variabile stringa_livello sembra vuota. Non deve esserlo!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •