Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Problema con onerror

  1. #1
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350

    Problema con onerror

    Perché il codice non funziona?

    codice:
    <script>
    // handler
    window.onerror = myOnError;
    msgArray = new Array();
    urlArray = new Array();
    lnoArray = new Array();
    function myOnError(msg, url, lno) {
    msgArray[msgArray.length] = msg;
    urlArray[urlArray.length] = url;
    lnoArray[lnoArray.length] = lno;
    return true;
    }
    function displayErrors() {
    win2 = window.open('','window2','scrollbars=yes');
    win2.document.writeln('Error Report 
    
    ');
    for (var i=0; i < msgArray.length; i++) {
    win2.document.writeln('Error in file: ' + urlArray[i] + '
     ');
    win2.document.writeln('Line number: ' + lnoArray[i] + '
    ');
    win2.document.writeln('Message: ' + msgArray[i] + '
    
    ');
    }
    win2.document.close();
    }
    </script>
    <form>
    <input type="button" value="Questo bottone ha un errore di sintassi" onClick="alert('unterminated
    string)"
    name="button"> 
    
     <input type="button" value="Visualizza l'errore" onClick="displayErrors()"
    name="button2">
    </form>
    Il programmino l'ho trovato qui su html.it:
    http://javascript.html.it/guide/lezi...degli-oggetti/

    Sono proprio una frana con javascript!



    Grazie per il vostro aiuto

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    Re: Problema con onerror

    Originariamente inviato da esacerbare
    Perché il codice non funziona?
    funziona

    se non sei d' accordo sei tu a dover circostanziare la tua affermazione, non io ad indovinare cosa intendi tu nel caso specifico con "non funziona"

  3. #3
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350
    Se io premo su "Visualizza l'errore" ottengo "Error Report" mentre in teoria dovrei leggere almeno 3 informazioni:
    Error in file: 1° info
    Line number: 2° info
    Message: 3° info
    (vedi verso metà codice)
    codice:
    win2.document.writeln('Error in file: ' + urlArray[i] + '
     ');
    win2.document.writeln('Line number: ' + lnoArray[i] + '
    ');
    win2.document.writeln('Message: ' + msgArray[i] + '
    
    ');

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se non si e' verificato un errore msgArray e' ancora vuoto

    quelle altre righe vengono scritte ciclando per la lunghezza di questo array
    = se e' vuoto non viene scritto altro

  5. #5
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350
    Prima di tutto grazie per il tuo tempo. Vediamo di approfondire un pochetto. Quello che scrivi mi aiuta a capire ma mi apre nuove incognite sul problema.

    codice:
    <script>
    // handler
    window.onerror = myOnError;
    Qui si crea una variabile di nome myOnError che deve contenere gli output della funzione onerror la quale agisce su tutto il contenuto di windows ovvero del layout.


    codice:
    msgArray = new Array();
    urlArray = new Array();
    lnoArray = new Array();
    Qui si creano 3 matrici chiamate msgArray, urlArray e lnoArray.

    codice:
    function myOnError(msg, url, lno) {
    msgArray[msgArray.length] = msg;
    urlArray[urlArray.length] = url;
    lnoArray[lnoArray.length] = lno;
    return true;
    }
    Qui si crea una funzione che aggiunge agli elementi delle matrici msgArray, urlArray e lnoArray un preciso valore indicato nell'argomento della funzione stessa senza cancellare i precedenti. Non mi é chiaro però il significato di 'return true'. Questa funzione tra il resto funziona allo stesso modo se al posto di true non ci metto niente oppure se ci metto 'false'. Non mi é chiaro la differenza tra questi 3 possibili valori.

    codice:
    function displayErrors() {
    win2 = window.open('','window2','scrollbars=yes');
    win2.document.writeln('Error Report 
    
    ');
    for (var i=0; i < msgArray.length; i++) {
    win2.document.writeln('Error in file: ' + urlArray[i] + '
     ');
    win2.document.writeln('Line number: ' + lnoArray[i] + '
    ');
    win2.document.writeln('Message: ' + msgArray[i] + '
    
    ');
    }
    win2.document.close();
    }
    In base a quanto letto sui miei manuali qui si crea un'altra funzione che apre un'altra finestra di nome win2 senza url di titolo o variabile windows2 e dotata di barra di scorrimento. In pratica si apre un'altra finestra e basta, perché? Perché non c'é il titolo? Che significato avrebbe una variabile associata a questo elemento?
    Dentro win2 la funzione dovrebbe andare a scrivere 'Error Report' e lo fa ma poi si ferma li.
    Il ciclo for che segue dovrebbe andare a scrivere il contenuto delle famosi 3 variabili create in precedenza ma se non vi sono stati assegnamenti di variabili non può scrivere nulla quindi a cosa serve questo ulteriore pezzo di codice della seconda funzione?
    'win2.document.close();' chiude il canale di scrittura aperto con il metodo open() e determina la visualizzazione dei dati in attesa.

    Come vedi ho capito solo in parte il codice e il discorso fatto in questa pagina:
    http://javascript.html.it/guide/lezi...degli-oggetti/
    mi aiuteresti a capire bene le mie incognite e potresti spiegarmi la ragione che ha portato lo scrittore della guida ad aggiungere il ciclo for?

    Grazie ancora

  6. #6
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350
    up!

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    return: guarda la console e vedi, dopo aver generato un errore, che differenza passa nel caso specifico tra ritornare false, ritornare true e non ritornare niente

    altra finestra: "titolo"? di cosa parli? manca l' url perche non serve: si andra' a scrivere dinamicamente in quell' oggetto finestra

    ciclo: ogni volta che generi un errore lo script accoda informazioni negli array, premi 3 volte volte il primo pulsante e clicca sul secondo button, vedrai 3 report
    a questo serve il ciclo

    se non ti rispondo piu' non e' per cattiveria, e' che trovo un po' snervante interrogarmi circa cose che da anni mi risultano lapalissiane
    probabilmente e' un mio limite
    di certo non posso starti dietro e dire di guardare la console o di premere 3 volte per capire perche' si cicla li'!!

    buon proseguimento!

  8. #8
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350
    ciclo: ogni volta che generi un errore lo script accoda informazioni negli array, premi 3 volte volte il primo pulsante e clicca sul secondo button, vedrai 3 report
    a questo serve il ciclo


    Questo non é vero! Con che browser hai provato?

  9. #9
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350
    up!

  10. #10
    Utente bannato
    Registrato dal
    Aug 2009
    Messaggi
    350
    up!

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.