giovedì 26 luglio 2007

Manipolazione degli eventi javascript lato client

Normalmente il comportamento dinamico di una pagina web è predefinito e calcolato direttamente in fase di definizione della pagina stessa. Così il file in html che arriva al browser ha una serie di oggetti che rispondono ai vari eventi, eseguendo metodi e cambiando proprietà.
Un esempio:

<div style="height: 39px; border-style:solid;" onclick="javascript:prova();">
div con click definito nella pagina
</div>

Può capitare però che il comportamento della pagina debba cambiare in funzione della pagina stessa. Quindi gli eventi javascript che dovranno essere generati durante la vita della pagina non sono definiti direttamente lato server ma vengono impostati "dinamicamente" nel browser.

In pratica è possibile scrivere un oggetto HTML senza eventi associati
ad esempio:

<div id="divNoEvent" style="height: 39px;border-style:solid;">
div senza click definito a runtime
</div>

e aggiungere un poco di codice.

<script type="text/javascript">
function prova()
{
alert('hai fatto click');
}
var o = document.getElementById('divNoEvent');
o.onclick = new Function('prova()');
</script>

La chiamata o.onclick = new Function('prova()'); consentirà di agganciare la chiamata alla funzione prova() a runtime.