Asp.Net & Javascript (Tips & Tricks): Debug degli script inseriti con RegisterClientScriptBlock

Uno dei motivi che rende javascript un linguaggio odioso (almeno per me) e la tipizzazione debole delle variabili. Questa sua caratterisca rende molto difficile il debug, spesso le funzioni ritornano comunque un valore. Per non parlare poi se si stanno utilizzando webservice per memorizzare informazioni nel db, le varibili null vengono tranquillamente covertite in string (nella stringa 'undefined' precisamente) con la conseguenza di ritrovarci il database pieno di record errati.

Se lo script java viene scritto all'interno del markup html della pagina, possiamo inserire un breakpoint nella funzione da controllare, fruttando l'integrazione con Internet Explorer di Visual Studio, che ferma l'esecuzione del codice. Ma se lo script lo generiamo dinamicamente tramite codice gestito? Se lo script non genera errori gravi, quali ad esempio accesso ad una proprietà di una variabile quando questa è null oppure errori di sintassi, l'unico modo per capire se la funzione è corretta è di ricorrere a piccoli trucchi.

Se vogliamo essere certi del valore di una variabile in un determinato momento, possiamo utilizzare una div, chiamiamola 'debugDiv', e nella proprietà innerHtml scriverci il valore ricordandoci di specificare un'etichetta che ci permette di identificare il valore stampato.

Una tecnica simile può essere applicata anche ad applicazioni già pubblicate, la differenza però sta nel fatto che invece di stampare a video i risultati, utilizzeremo un piccolo webservice, che ci possiamo portare dietro da applicazione in applicazione, che registrerà le informazioni che vogliamo in un file xml o direttamente nel db.

Ma se nonostante tutte le info che riceviamo, non riusciamo ad capire dov'è il problema e quindi abbiamo bisogno di eseguire lo script riga dopo riga, il metodo più banale di tutti sta nel generare volutamente un'eccezzione, basta inserire la riga 'null.generaeccezione;' nello script, che vs interromperà l'esecuzione permettendovi di eseguire il debug step by step con la comodità di poter utilizzare la finestra immediata.

Javascript rappresenta un valore aggiunto per Asp.Net, ma non è l'unico modo di gestire le applicazioni sul client. Silverlight (o WPF), una delle innovazioni introdotte da Microsoft ormai da qualche anno, permette di fare cose eccezzionali con uno sforzo decisamente minore. Ma la strada per la sua totale compatibilità coi browser è ancora lunga, quindi per progetti grossi e che soprattutto interessano un'ampia varietà di utenti, non ci resta che piangere continuare a utilizzare Javascript.

0 commenti:

Posta un commento