30 Nov
matte

matte il 30 November 2006 parla di Ajax/Web 2.0

Behaviour e AJAX

Ho realizzato un sistema per consentire agli utenti di scrivere commenti con una votazione (quello famoso con le 5 stelline). Ho fatto da solo e tutto funzionava senza problemi utilizzando event-selectors. Poi ho trasferito il sistema su un’altra applicazione dove non utilizzavo event-selectors, ma Behaviour molto simile come funzionamento. Vediamo come due regole scritte per event-selectors

    1 var Rules = {
    2    'p.star a:click': function(element) {
    3      ...  // La tua funzione Javascript per il click
    4    },
    5    
    6    'p.star a:mouseover': function(element) {
    7      ...  // La funzione Javascript per il mouseover
    8    }
    9 }
   10 
   11 Event.observe(window, 'load', function(event){ EventSelectors.start(Rules); });

si trasformano per Behaviour:

    1 var myrules = {
    2  'p.star a': function(element) {
    3    element.onmouseover = function(){
    4      ...  // La tua funzione Javascript per il mouseover
    5    };
    6    element.onclick = function(){
    7      ...  // La tua funzione Javascript per il click
    8    };
    9  }
   10 };
   11 
   12 Behaviour.register(myrules);

La conversione funziona anche passando da Behaviour ad event-selectors.

Tutto sembrava funzionare, ma poi mi sono accorto che se un utente non inseriva tutti i dati, dopo il POST del form in AJAX, veniva aggiornato il DOM con gli errori evidenziati nel form. Da questo momento in poi non funzionavano più le regole associate con il Behaviour. Dopo svariati tentativi mi sono accorto che le regole del Behaviour non sono valide per un ramo di DOM aggiornato via AJAX. Ho tolto il Behaviour e messo anche su questa applicazione event-selectors.

Scrivi un commento