<head> </head> della pagina contenitore. In questo file ci sono le principali variabili che l'utilizzatore deve personalizzare.<body> </body> della pagina contenitore, nel punto in cui vogliamo che appaiano i contenuti inclusi. E' la funzione che inizializza le variabili di JSI e le altre funzioni dello script.<head> </head> delle pagine incluse. Questo file impedisce che le pagine si aprano singolarmente: serve per essere sicuri che quando si entra da una qualunque pagina interna del sito (ad esempio seguendo il link fornito da un motore di ricerca) questa sia vista inclusa nella pagina contenitore.</body> nelle pagine incluse. E' un file che serve ad accelerare lo script, accelerando l'apertura della pagina inclusa: senza questo file la pagina inclusa viene visualizzata solo quando è caricata tutta.
<div id="contenuti"><span></span></div>id di questo div, che deve necessariamente essere "contenuti"<body> della pagina contenitore: questo accadeva con una versione precedente, ma con JSI 3 resta semplicemente <body>.<!-- saved from url=(0014)about:internet --><noscript> </noscript><head> </head> saranno ovviamente presenti il doctype, il title, i metatag e il richiamo al foglio di stile. In <body> </body> la pagina avrà l'intestazione del sito, il menù di navigazione, una parte destinata ai contenuti (inseriti da JSI) ed eventualmente il footer.<head> </head><div> </div> "contenuti"<body> </body> con il suo tag <noscript> </noscript>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<title>Nome Sito</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="it" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="description" content="..." />
<meta name="keywords" content="..." />
<meta name="author" content="..." />
<meta name="copyright" content="..." />
<link rel="stylesheet" href="stile.css" type="text/css" />
<script src="jsi-contenitore-head.js" type="text/javascript"></script>
</head>
<body>
<h1>Nome sito</h1>
<div id="menu">
<ul>
<li><a href="home.htm" onclick="return vai(this.href,0,0);">home</a></li>
<li><a href="pagina-1.htm" onclick="return vai(this.href,0,0);">pagina 1</a></li>
<li><a href="pagina-2.htm" onclick="return vai(this.href,0,0);">pagina 2</a></li>
</ul>
</div>
<div id="contenuti"><span></span></div>
<script src="jsi-contenitore-body.js" type="text/javascript"></script>
<noscript> </noscript>
</body>
</html>
<head> </head> hanno il loro doctype, il title, i metatag per l'indicizzazione da parte dei motori di ricerca e il richiamo al foglio di stile. Il <body> </body> si caratterizza per la presenza dei soli contenuti; per chi ha familiarità con i frames, può essere utile dire che le pagine da includere vanno pensate come le pagine che sono richiamate in un frameset.<head> </head></body>, con il suo tag <noscript> </noscript>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<title>Pagina 1 - Nome sito</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="it" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="description" content="..." />
<meta name="keywords" content="..." />
<meta name="author" content="..." />
<meta name="copyright" content="..." />
<link rel="stylesheet" href="stile.css" type="text/css" />
<script src="jsi-pagine-head-ricomponi.js" type="text/javascript"></script>
</head>
<body>
<h2>Pagina 1</h2>
<p>Testo pagina 1. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
<p>Nel testo ecco un link ad un'altra pagina inclusa, ad esempio la <a href="pagina-2.htm" onclick="return vai(this.href,0,0);">pagina 2</a>.</p>
<script src="jsi-pagine-body-accelera.js" type="text/javascript"></script>
<noscript> </noscript>
</body>
</html>
var ricarica_pag=0;var ricarica_pag=0;, questa impostazione sarà quella di default ma potrà essere modificata in specifiche situazioni sfruttando una variabile passata con i link; se scegliamo var ricarica_pag=1;, tutto il sito lavorerà solo in modalità reload indipendentemente dalle variabili passate con i link.var iload=0;var iload=1;, se invece tutte le pagine hanno l'acceleratore si deve mettere var iload=0;.
var iload=0; e poi intervenire su una variabile passata con i link che richiamano le pagine, che assumerà valore 0 oppure 1 a seconda che queste abbiano o meno l'acceleratore: si tratta di una soluzione tecnicamente più fine, ma un po' più complessa da gestire.var iload=0;.var iload=0; JSI potrà lavorare sia in modalità asincrona che in modalità reload; se invece usiamo var iload=1; tutto il sito lavorerà solo in modalità reload, indipendentemente dalle altre impostazioni.
var iload=0; è possibile visualizzare le pagine che hanno già l'acceleratore usando la modalità asincrona (nei link che richiamano queste pagine useremo - come vedremo tra poco - this.href,0,0); le pagine senza acceleratore verranno invece visualizzate usando la modalità reload grazie alla diversa impostazone del link che le richiamano (in questo caso useremo this.href,1,0)var iload=1; tutto il sito lavorerà in modalità reload e tutti i link potranno essere impostatati da subito con this.href,0,0: appena aggiunto l'acceleratore a tutte le pagine sarà sufficiente cambiare var iload=1; in var iload=0; e - senza più dover mettere mano ai link - tutto passerà al funzionamento in modalità asincrona.var pag_iniziale='home.htm';var attesa='<p>Attendere, apertura della pagina in corso...<\/p>';var attesa='';var attesa='<p> <\/p>';var attesa='<p class=\"attesa\">Attendere, apertura della pagina in corso...<\/p>';var attesa='<img src=\"immagini\/attesa.gif\" height=\"20\" width=\"100\" alt=\"Attendere, apertura della pagina in corso...\" \/>';var deepdir=3;deepdir dobbiamo indicare la profondità del sito cioè il numero di cartelle utilizzate una dentro l'altra.<a href="../index.html">: se questi link venissero trascritti così come sono quando la pagina viene inclusa nella pagina contenitore che si trova ad un livello superiore, i link risulterebbero sbagliati. Al tempo stesso, prevedere già i percorsi adatti alla pagina contenitore renderebbe i link della pagina da includere inutilizzabili quando questa viene visualizzata isolata (ad esempio se javascript è disattivo). Lo stesso ragionamento si applica anche ad altri tipi di percorsi, ad esempio quelli utilizzati per richiamare le immagini.../) JSI deve ripercorrere la stringa, ho pensato di limitare l'impiego di risorse e accelerare le operazioni di inclusione limitando il lavoro di JSI al numero effettivamente necessario di controlli.../) è inutile far verificare allo script se sono presenti tre ../ (quindi ../../../) che in genere corrispondono anche a tre cartelle una dentro l'altra. Nel caso invece che ci siano ben quattro sotto-livelli, mettendo var deepdir=4; lo script andrà a correggere anche i link così: ../../../../index.html.var struttura=new Array();
struttura[0]='index.html'; // inserire il nome della pagina contenitore;struttura[1]=struttura[0];struttura[2]='foto.htm'; // secondo tipo di pagina contenitore;struttura[3]='altro.htm'; // terzo tipo di pagina contenitore;struttura[4]='quarta-struttura.htm';
struttura[5]='quinta-struttura.htm';self.location.href='index.html?load=1&pag='...<a href="pagina.htm" onclick="return vai(this.href,0,0);">pagina</a><a href="pagina.htm" onclick="return vai(this.href,1,0);">pagina</a><a href="pagina.htm" onclick="return vai(this.href,0,2);">pagina</a>this.href e due variabili numeriche.this.href e non necessita di personalizzazione: dice allo script di applicare le successive indicazioni alla pagina richiamata in quel link.var iload vista precedentemente: condiziona il funzionamento di JSI ed è legata alla presenza dello script jsi-pagine-body-accelera.js nella pagina da includere. Può assumere valore 0 oppure 1:
var ricarica_pag=0; e var iload=0;) ma in alcune pagine - magari perché non ancora convertite - non c'è il richiamo a jsi-pagine-body-accelera.js: impostando la variabile centrale a 1 nei link che richiamano queste pagine lo script funziona correttamente anche in assenza dell'acceleratore.struttura[2]='foto.htm';), mettendo 2 nell'ultimo parametro la pagina richiamata nel link si aprirà inclusa nella struttura delle foto.this.href,0,0.this.href,0,0 JSI usa le regole generali presenti in jsi-contenitore-head.jsvar ricarica_pag, var iload e le due variabili numeriche passate con i link) sono impostate a 0.<noscript> </noscript> ?<noscript> </noscript> dei richiami in body:
<noscript>
<p>Se stai leggendo questo messaggio, il tuo browser ha javascript disattivo. I contenuti del sito sono ugualmente fruibili, ma per una navigazione più confortevole ti suggeriamo di attivare javascript.</p>
</noscript><noscript> </noscript> sono indicizzati dai motori di ricerca e possono essere presentati nella breve descrizione che compare dopo il link alla pagina: essere indicizzati su Google con la frase "se stai leggendo questo messaggio, il tuo browser ha javascript disattivo" non invoglia certo il navigatore a visitare il nostro sito...<noscript>
<iframe src="home.htm" id="dbtag" name="dbtag"></iframe>
<p>Miglior visualizzazione con javascript attivo</p>
</noscript>#dbtag. E' importante non cambiare l'id e il name dell'iframe, che devono necessariamente essere "dbtag".target="dbtag" in questo modo:
<a href="pagina-1.htm" onclick="return vai(this.href,0,0);" target="dbtag">pagina 1</a><noscript>
<p><a href="index.html">pagina iniziale</a></p>
</noscript><noscript>
<p><a href="mappa.htm">mappa del sito</a></p>
</noscript>var ricarica_pag=0; e var iload=0;this.href,0,0var ricarica_pag=1;var ricarica_pag=0; e var iload=0;this.href,0,0this.href,1,0<a href="http://validator.w3.org/check?uri=referer">) e nei siti costruiti con JSI non va bene, perché il referrer sarà normalmente la pagina contenitore. Occorrerà dunque modificare manualmente il codice inserendo dopo check?uri= il percorso assoluto della pagina.id che possono essere sfruttati nel foglio di stile:
id="contenuti", sempre presente, attribuito al <div> </div> che racchiude i contenuti inseriti da JSI nella pagina contenitoreid="dbtag", attribuito all'<iframe> </iframe> per presentare i contenuti in caso di navigazione con javascript disattivo (presente solo se il webmaster ha scelto questa soluzione).</body>, e altrettanto è richiesto per il richiamo di jsi-pagine-body-accelera.js: in che ordine devono essere messi?</body>.