Presentazione

Introduzione a JSI

Cosa fa esattamente JSI?
Con questo script possiamo includere dinamicamente delle pagine web dentro ad altre. JSI imita con javascript la funzione include di PHP e ASP, ma a differenza di questi linguaggi funziona lato client e quindi può essere usato con tutti gli spazi web. Può inoltre essere usato per pagine che lavorano in locale sul proprio pc senza dover installare un server virtuale, oppure su un cd-rom.
Da quale esigenza è nato JSI?
Poter includere pagine dentro ad altre anche per chi ha spazi che non supportano linguaggi di scripting lato server, eliminando i frame e superando i limiti degli iframe, le uniche due soluzioni possibili con il solo html.
A chi si rivolge questo script, principianti o webmaster esperti?
A entrambi. Al principiante JSI offre uno strumento semplice per realizzare il proprio sito; il webmaster esperto può invece avvantaggiarsi delle caratteristiche avanzate di questo script che lo accomunano alle altre tecnologie di navigazione asincrona quali AJAX e AHAH.
Di AJAX si parla da tempo ma la sua popolarità risale al 2005, dopo che è stato utilizzato da Google per GMail. A quando risale la prima versione di JSI?
La versione 1.0 di JSI è stata presentata a dicembre 2003; un mese dopo è nata la versione 2.0. A dicembre 2004 sono state rilasciate le versioni 1.1 e 2.1 e a gennaio 2005 la versione 3.0, più articolata e completa, della quale sono stati successivamente rilasciati alcuni aggiornamenti.

Principi di funzionamento

Su quale principio si basa il funzionamento JSI?
Lo script parte da una pagina contenitore, nella quale inserisce il contenuto delle pagine da includere. La pagina contenitore può essere ad esempio quella che determina il layout del sito, con l'intestazione, il menù di navigazione e il footer: all'interno di questa struttura vengono di volta in volta inseriti i contenuti delle singole pagine. In pratica JSI va a leggere tutto ciò che è contenuto tra <body> e </body> delle pagine da includere e lo incorpora nella pagina contenitore in un apposito <div> </div>.
Inoltre, quando lavora in configurazione asincrona, JSI aggiorna il contenuto della pagina contenitore senza ricaricarla, esattamente come avviene con AJAX e AHAH.
Hai precisato "in configurazione asincrona": in quanti modi può funzionare JSI?
JSI ha due diverse configurazioni: può aggiornare i contenuti mantenendo fissa la struttura della pagina (modalità asincrona) oppure può ricaricare ogni volta la pagina contenitore insieme alla pagina da includere (modalità reload).
Sono poi possibili configurazioni miste che consentono la navigazione a struttura fissa in alcune situazioni e il reload della struttura in altre, in base alle esigenze del webmaster.
Perché due modalità di funzionamento?
Per rispondere a esigenze diverse: la modalità asincrona è utile quando ci sono variabili da conservare nella pagina, oppure se ci sono molte immagini (come nelle anteprime delle gallerie fotografiche) che non si vogliono ricaricare tutte le volte; la modalità reload offre invece un sito più intuitivo e semplice da navigare per l'utente finale.
JSI può includere qualsiasi pagina web?
No, come tutte le applicazioni basate su javascript JSI può includere solo pagine che risiedono sullo stesso spazio web. Questo è un elemento di sicurezza a tutela dell'utente, al quale non vengono presentate pagine esterne incluse in modo fraudolento nella struttura del sito che sta navigando.
Nel caso delle immagini invece tutto funziona come d'abitudine: non ci sono problemi se nella pagina da includere viene richiamata un'immagine residente su un altro spazio web. Ovviamente, il corretto uso di questa possibilità dipende dalla correttezza del webmaster.

Ambiti di applicazione e impatto sui motori di ricerca

Quando conviene usare JSI?
JSI può essere usato per costruire un sito da zero - è una possibilità - oppure per rielaborare un sito già esistente. Spesso l'uso di JSI facilita il compito del webmaster perché razionalizza il lavoro. Ecco alcune situazioni, basate sull'esperienza maturata finora, nelle quali l'uso di JSI è vantaggioso:
C'è spazio per usare JSI anche quando PHP o ASP sarebbero supportati?
Sì. JSI in configurazione asincrona non ricarica la struttura della pagina, perciò la navigazione nel sito è più veloce perché ci sono meno dati da trasferire (e si consuma meno banda); inoltre è possibile conservare dati nelle variabili senza dover fare uso di cookies.
Che impatto ha JSI sull'indicizzazione da parte dei motori di ricerca?
JSI consente di ottenere un'indicizzazione ottimale da parte dei motori di ricerca con un metodo lecito, corretto e trasparente. I siti realizzati con JSI hanno infatti una caratteristica molto vantaggiosa: il <body> </body> delle pagine da includere è costituito dai soli contenuti, che sono quindi immediatamente accessibili agli spider dei motori di ricerca senza essere preceduti dal menù o da altro codice scarsamente pertinente con l'argomento trattato. In più, ogni pagina ha in <head> </head> i suoi metatag specifici che contribuiscono alla corretta indicizzazione.
In questo modo la pagina viene trovata facilmente dai motori di ricerca; una parte di JSI si occupa poi di ricomporre la pagina nel suo contenitore quando viene richiamata con un link diretto.
Quando usare JSI in modalità asincrona e quando in modalità reload?
Conviene utilizzare in prima battuta la modalità reload e riservare l'uso della modalità asincrona - dopo che si è preso confidenza con il funzionamento di JSI - a situazioni particolari.

Compatibilità, standard, tecnologie assistive

Qual'è la compatibilità di JSI con i diversi browser?
Fin dalla prima versione lo script è compatibile con tutti i più comuni browser. Questo è l'elenco dei browser con i quali JSI ha superato positivamente il test: Le funzioni utilizzate sono supportate anche da Explorer 4, con il quale però non è stato effettuato un test specifico. Su Mac e Linux non ho potuto fare test con tutti i browser, ma non c'è motivo per pensare a problemi, dato che con tutti motori di rendering JSI funziona senza difficoltà.
Come hai fatto ad ottenere una compatibilità così ampia?
JSI è stato sviluppato fin dall'inizio con l'intento di avere la massima compatibilità: per questo motivo, ad ogni browesr viene servito il codice più appropriato. Per assicurare una retrocompatibilità ottimale, ho dovuto usare alcuni tag deprecati dagli standard più recenti; questi tag entrano in funzione solo se la pagina viene visualizzata con browser vecchi, che non supportano le tecnologie più recenti.
In pratica ai browser nuovi viene servito un codice utilizzato in accordo con gli standard correnti, ai browser vecchi viene servito codice attualmente deprecato, ma che è il solo codice che essi sono in grado di gestire.
Quale standard rispetta il codice html utilizzato da JSI?
Per i browser più recenti JSI serve codice valido secondo le DTD HTML 4.01 Transitional e XHTML 1.0 Transitional, perché fa uso di un iframe intermediario non previsto dalla DTD Strict.
Come molte applicazioni AJAX, lo script si appoggia su un iframe nascosto per passare i dati da una pagina all'altra. L'iframe inserito da JSI viene poi rimosso dal DOM non appena completato il passaggio dei dati dalla pagina inclusa alla pagina contenitore, e nella pagina finita dell'iframe non c'è traccia; tuttavia, anche se l'iframe alla fine scompare (la pagina finita rispetterebbe quindi le specifiche della DTD Strict), ritengo più corretto usare la DTD Transitional.
Solo al vecchio Netscape JSI serve codice proprietario, non previsto dagli standard: è il prezzo da pagare per avere una buona retrocompatibilità.
E' possibile la navigazione gli screen reader?
Questo è ancora un punto critico delle applicazioni come JSI e AJAX. Lo screen reader legge senza problemi il codice della pagina inclusa, ma l'utente ha difficoltà ad accorgersi del cambiamento dei contenuti. Spero di migliorare presto questo aspetto: esistono alcune possibili soluzioni, alle quali sto lavorando.
E la navigazione con un browser testuale?
Ho provato JSI con Lynk, un browser testuale storico che funziona sotto DOS e che non supporta javascript: non ho avuto problemi nel navigare il sito.
Cosa succede quando javascript è disabilitato?
Grazie ad alcuni accorgimenti utilizzati nella sintassi dei link, le pagine risultano navigabili anche a chi ha disattivato javascript: il sito risulta quindi pienamente fruibile da parte di tutti, senza perdita di contenuti.
Ci sono particolarità per il funzionamento in locale con la Service Pack 2 di Windows XP?
Con Explorer la Service Pack 2 blocca di default l'esecuzione in locale di contenuto attivo, javascript compreso; pertanto anche JSI verrebbe bloccato. Il problema si risolve facilmente inserendo nelle pagine destinate alla consultazione in locale o da cd-rom un commento particolare: ne parliamo più estesamente nelle istruzioni per la configurazione di JSI.
Per gli utenti che utilizzano altri browser (quali Firefox o Opera) non c'è invece nessun problema.