Con un post sul suo blog personale John Resig spiega (rimandando anche alla documentazione ufficiale) l'implementazione su Firefox 3 di una funzionalità  sicuramente molto promettente per le future applicazioni web basate su Ajax: Cross-Site XMLHttpRequest.Come molti di voi sanno, usando solo l'oggetto XMLHttpRequest non è possibile fare richieste verso risorse che risiedono su un dominio esterno rispetto a quello del nostro sito. Il W3C sta però elaborando i dettagli di un meccanismo (attualmente in stato di draft) definito Access Control for Cross-site Requests. Proprio su di esso si basa l'implementazione di Firefox 3.Funziona più o meno così. Chi crea e gestisce contenuti sul web potrà  stabilire, specificandolo in un header ad hoc o in un documento XML, se consentire o meno l'accesso ad una risorsa tramite richieste XMLHttp provenienti dall'esterno. Essendo tutto svolto dalla parte di chi gestisce i contenuti, nulla cambia nella definizione della parte Javascript lato client. Come è facile intuire, e come lo stesso Resig sottolinea a fine post, è un sistema che potrebbe dare ai fornitori di contenuti nuove possibilità  e maggiore flessibilità  di sfruttamento delle proprie API per la creazione di applicazioin e mashup.Nelle pagine che ho linkato sono presenti semplici dimostrazioni pratiche (che ovviamente funzionano solo su Firefox 3).

Continua a leggere Cross-Site XMLHttpRequest su Firefox 3

Categoria: Scripting

Se avete Firefox, andate su questo sito (http://www.hidefdvd.com/). Cliccate su uno qualunque dei titoli di DVD in evidenza sulla home page. Badate innanzitutto alla barra dell'indirizzo (su cui non cambia la URL!) e fate un refresh della pagina con il DVD su cui siete arrivati. Verrete riportati... alla home page! àˆ davvero questa la cosa giusta? E se io volessi salvare nei bookmark la pagina? Ah, certo, in fondo alla descrizione dell'articolo, piccolo piccolo, c'è un link: Permanent Link Item. àˆ quello che devo salvare. Per inciso: su Safari facendo il refresh viene mantenuta la pagina dell'articolo.Ma il problema non è il diverso comportamento dei due browser. A citare il sito Hi-Def DVD come cattivo esempio di uso dell'oggetto XMLHttpRequest è Shaun Inman in questo articolo apparso su Vitamin.Il consiglio dell'autore è di evitare il più possibile il ricorso a tecniche di remote scripting per gestire la navigazione tra i contenuti del sito, concentrando il suo utilizzo a quelli che definisce "actions and transient or conditional data". Da leggere.

Continua a leggere Navigazione con XMLHttpRequest

Categoria: Scripting

Eccoci al quasi consueto appuntamento del venerdì con i bookmark. Apriamo con una risorsa non recentissima ma senza dubbio meritevole: Design for Accessibility è un'ottima introduzione all'accessibilità  e in particolare alle WCAG realizzata da Andy Budd.Restando in tema W3C, è stato da poco pubblicato il working draft delle specifiche dell'oggetto XMLHttpRequest, che conferma ancora una volta l'impegno del W3C nel promuovere i web standards. Ecco l'introduzione del documento:The XMLHttpRequest object is implemented today, in some form, by many popular Web browsers. Unfortunately the implementations are not completely interoperable. The goal of this specification is to document a minimum set of interoperable features based on existing implementations, allowing Web developers to use these features without platform-specific code. Passiamo al Javascript con JaS - Javascript Slides, un esempio di slideshow: in apperenza si presenta versatile, include uno slideshow e diversi temi... ma ci sono un paio punti critici da evidenziare. Primo: le immagini e gli ingrandimenti vengono inserite nella pagina attraverso il DOM, e restano quindi inaccessibili a visitatori con Javascript disabilitato o browser non DOM-compatibili. Secondo: le miniature vengono realizzate ridimensionando gli ingrandimenti attraverso i CSS; il caricamento della pagina è quindi lento e il suo uso è sconsigliato quando le immagini della galleria sono molte.Per quanto riguarda i CSS: in Applied CSS vertical-align viene presentata la risposta a un problema di design comune, ovvero la centratura verticale di un'immagine all'interno di un elemento con altezza fissa. Concludo segnalando CSS Remix, l'ennesima galleria di siti basati sui CSS. àˆ tutto per oggi: alla prossima e...serena Pasqua a tutti.

Continua a leggere I bookmark del venerdì

Categoria: Bookmark

L'altro giorno stavo mostrando un prototipo ad una società  per la quale pensavo che AJAX potesse rappresentare un'ottima soluzione. Avevano la necessità  di validare molti form e di popolare textareas e combobox.Volevo allora mostrare come tecniche di remote scripting potevano fare al caso loro. Inserisco il cd con i miei prototipi e lancio i file HTML. Si apre Internet Explorer ma non succede nulla. Nessun file HTML fa quello che deve. Superati i primi secondi di panico chiedo di poter accedere ad Internet e mostrare qualcosa online.Solo a quel punto le cose erano più chiare. I sistemisti avevano disabilitato gli ActiveX nelle Security Settings.Questo banale equivoco mi ha fatto riflettere molto anche perchè non è la prima volta nella mia carriera che vado in una società  e trovo questo settaggio imposto dal reparto dei Sistemi Informativi. In questi scenari è d'obbligo percià fare un passo indietro e tornare a programmare il Remote Scripting con l'uso del vecchio buon IFrame.In fin dei conti, anche se l'oggetto XHR (XMLHttpRequest) espone la possibilità  di accedere agli headers ed ad altri dettagli del protocollo HTTP, a fronte di una maggiore compatibilità  sui browser l'uso dell'IFrame rappresenta ancora una scelta validissima.Nel caso, per esempio, di questa società  dovrà necessariamente perseguire questa strada.Leggiamo quotidianamente post del tipo : Ajax contro Flash, Ajax contro Coldfusion, Ajax contro Godzilla... Ma forse dovrebbe essere AJAX o IFrame per il Remote Scripting ?

Continua a leggere E se fosse AJAX contro il vecchio IFRAME

Categoria: Scripting

àˆ risaputo che l'oggetto XMLHttpRequest è una delle basi di AJAX. àˆ altresì risaputo che la sua introduzione si deve a Microsoft, che per prima lo implementà su Internet Explorer 5 come oggetto ActiveX. Mozilla, Safari e ultimamente Opera, invece, implementano una versione nativa dell'oggetto.àˆ questo il futuro anche per IE 7. Dal blog del team di sviluppo:I'm excited to mention that IE7 will support a scriptable native version of XMLHTTP. This can be instantiated using the same syntax across different browsers and decouples AJAX functionality from an ActiveX enabled environment.Tradotto in codice: if (window.XMLHttpRequest){           // If IE7, Mozilla, Safari, etc: Use native object           var xmlHttp = new XMLHttpRequest() } else { if (window.ActiveXObject){           // ...otherwise, use the ActiveX control for IE5.x and IE6           var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");           } }

Continua a leggere XMLHttpRequest su Internet Explorer 7

Categoria: Scripting

Ogni giorno entro sempre più in profondità  nelle tematiche che riguardano lo sviluppo di applicazaioni web con tecniche tipo AJAX e con il Javascript Integration Kit per Flash. E devo dire che si tratta di un viaggio davvero interessante.Mi sono reso conto che una della maggiori cause di perdita di tempo nella fasi di sviluppo e rilascio è sicuramente data dall'inefficienza delle tecniche che è possibile utilizzare per il debug. Intendo in un futuro non troppo prossimo dedicare un post proprio all'argomento, per ora mi limito a segnalarvi e consigliarvi (dato che l'ho già  testata) questa estensione per Firefox : FireBug.Si tratta di un'estensione che ingloba e sostituisce 3 differenti utilities di Firefox : DOM Inspector, Javascript Console e HTTP Request Sniffer. FireBug rappresenta un grosso passo avanti per ottimizzare i tempi di debug delle applicazioni in quanto permette di "spiare" le richieste dell'oggetto XMLHttpRequest, di intercettare errori Javascript e tante altre cose. Insomma, da non perdere!

Continua a leggere Debug con FireBug

Categoria: Scripting

Uno dei limiti dell'ormai ubiquo oggetto XMLHttpRequest è la difficoltà  di utilizzarlo per chiamate verso server diversi da quello su cui risiedono le pagine di una specifica applicazione.Le restrizioni non sono in realtà  intrinseche dell'oggetto in questione, ma discendono dalle impostazioni di sicurezza dei vari browser. Ci sono diversi metodi per aggirare l'ostacolo, alcuni li ho implementati io stesso (ed è tutto dire) per certi esperimenti da dilettante che vado facendo di tanto in tanto al posto di un Sudoku o di un Bartezzaghi sulla Settimana Enigmistica. Per una panoramica seria, invece, consiglio questo articolo uscito su XML.com. 3 le soluzioni proposte e analizzate con tanto di codice:Application proxies. Write an application in your favorite programming language that sits on your server, responds to XMLHttpRequests from users, makes the web service call, and sends the data back to users.Apache proxy. Adjust your Apache web server configuration so that XMLHttpRequests can be invisibly re-routed from your server to the target web service domain.Script tag hack with application proxy (doesn't use XMLHttpRequest at all). Use the HTML script tag to make a request to an application proxy (see #1 above) that returns your data wrapped in JavaScript. This approach is also known as On-Demand JavaScript.

Continua a leggere Superare i limiti di XMLHttpRequest

Categoria: Scripting

Ajax è davvero una bella tecnologia. La capacità  di riportare le interazioni fra web server e l'interfaccia in modalità  asincrona conferisce più fluidità  di utilizzo e una migliore, come si dice, "user experience". Ma, nel campo delle applicazioni software, aggiungendo complessità  spesso si aggiunge anche minor controllo.Un tale Samy, qualche giorno fa, ha "bucato" Myspace.com, una delle più grandi comunità  di relazioni sul Web, utilizzando le potenzialità  di Ajax. Il giovane, che ha 19 anni e si definisce un "playboy/software developer", ha semplicemente aggiunto al proprio profilo del codice JavaScript che non solo, anche grazie alla complicità  del browser, ha eluso i diversi controlli dell'applicazione Web, ma è riuscito a rendersi praticamente invisibile all'esecuzione utilizzando l'oggetto XMLHTTPRequest. (more…)

Continua a leggere Samy is my hero: Ajax o della sicurezza

Categoria: Sicurezza