Firefox 3 in arrivo: showModalDialog()

febbraio 27th, 2008 Posted in Tecnologia, standard, web

Tra qualche giorno dovrebbe essere rilasciata la versione 3 del mio browser preferito. Sto utilizzando la beta da un paio di settimane e non ho ancora riscontrato problemi (chissà se questo post arriverà in fondo ora che l’ho detto).

Volevo fare dei confronti più scientifici con la versione precedente, ma il vecchio PC l’ho dismesso prima del previsto e la release 2 del browser non è più immediatamente disponibile. Quindi vado un po’ a memoria.

Come annunciato il browser è estremamente meno ingordo di risorse e, anche se ancora in beta, sembra anche più stabile. Devo ammettere che quasi tutte le estensioni installate sono state disabilitate perché ancora non compatibili (ahime’, tra questel’impagabile color picker e la web developer bar) e questo certamente condiziona fame e stabilità.

Diversi dettagli grafici sono stati migliorati ed è ora immediato aggiungere link tra i segnalibri. Un’occhiata alle release notes per pregustare tutte le migliorie.

Tra le novità più interessanti ho notato l’implementazione della funzione window.showModalDialog(), non standard e introdotta da Internet Explorer 4, in grado di aprire un documento HTML in popup in una finestra “modale“. Questa funzione, rispetto all’usuale window.open() ha 3 differenze notevoli:

  1. L’utente non può agire sulla pagina chiamante finché questa finestra non è stata chiusa. Appunto è “modale”.
  2. Il thread di esecuzione javascript si interrompe in attesa che la finestra sia chiusa.
  3. Alla chiusura la finestra può restituire al programma chiamante un valore (o un oggetto) di ritorno.

Questa funzione può essere pensata come una generalizzazione della funzione javascript prompt(). In un’applicazione consente al programma di aprire un dialogo con l’utente, proporgli una scelta (con la potenza e la grafica consentita da una normale pagina HTML) e restituire al programma il risultato della scelta. Il programma (molto importante) è rimasto in attesa che l’utente compisse la sua scelta (pagina di esempio)

Prima della showModalDialog() questa funzionalità doveva essere realizzata con artifizi javascript, HTML e CSS (visualizzare un div con il dialogo e sovrapporre un altro div semitrasparente per impedire l’interazione con la pagina). La restituzione di un valore al chiamante e, soprattutto, la sincronizzazione del flusso di esecuzione viene realizzato definendo una funzione di callback da invocare alla “chiusura” del div. Complesso e poco modulare. Qui un valido esempio.

Certo, la funzione non è standard e, con Firefox 3 sarà presente nei due browser principali, ma per gli altri? Beh, certamente una funzione di questo tipo non verrà utilizzata su siti standard e aperti per garantire la compatibilità con i vari browser.

Ma in ambiti più controllati, come intranet aziendali, l’introduzione di una soluzione robusta ed elegante come la showModalDialog() sarà un grosso aiuto. E poi, basterà attendere.

Non dimentichiamo che Ajax si basa sulla standardizzazione della funzione XMLHttpRequest, nata in Internet Explorer e poi adottata da tutti gli altri browser e divenuta standard W3C. A proposito, è di questi giorni la definizione della bozza (draft) del level  2 dello standard per XMLHttpRequest. Tra le novità la possibilità di interrogare server terzi (cross site scripting) fondamentale per l’utilizzo client side di web service forniti da terze parti. Ma l’argomento meriterà un post dedicato.

Firefox ti amo.

I commenti non sono abilitati in questa pagina.