Bookmark and Share
 Migliorare la navigazione dei siti a frame

Sviluppo Siti Monday 14 May 2007 alle 21:34

Molte persone hanno problemi ad utilizzare i frame nella creazione di un sito: certo è vero che un sito a frame non è il massimo per l’accessibilità. Uno dei peggiori bug che incontrano è quello di non poter creare un “segnalibro” di un’esatta pagina se questa è all’interno di un sito a frameset. Per risolvere questo, gli utenti più esperti sono in grado di creare un bookmark (segnalibro, preferito) al frame individuale, ma facendo questo perdono la relazione con gli altri frames, frames che generalmente includono la possibilità di navigare correttamente all’interno dei contenuti del sito. Per risolvere questo inconveniente possiamo utilizzare qualche semplice trucchetto.

Innanzitutto, per semplificare la vita agli utenti (non tutti sanno che con la combinazione di tasti CTRL+D si attiva la funzionalità di aggiunta ai preferiti) e dare la possibilità anche a quelli meno esperti di crearsi un segnalibro in una pagina interna, sarebbe opportuno creare un piccolo link, magari in alto a destra, che permette di inserire tra i preferiti la pagina all’interno del proprio browser. Inserendo un link come il seguente nel codice della pagina sarà semplice aggiungere la possibilità di far inserire le proprie pagine interne tra i segnalibri:

<a href="javascript:window.external.AddFavorite("http://simone.cabrino.it", "Cabrino Simone's Blog");">Aggiungi Cabrino Simone's Blog tra i Preferiti</a>

Continuiamo utilizzando un ben conosciuto trucchetto Javascript usato per verificare se la pagina corrente – quella che sarà contenuta nel frame – sia come top della pagina, quindi all’nterno di un frame, e nel caso eseguiamo il redirect.

<script language="javascript">
if (document.location == top.location)
{
document.location="frameset.html";
}
</script>

La soluzione seguente, derivata da questa precedente, permette di creare un bookmark a qualsiasi pagina senza il frameset a cui sono contenuti. Inoltre, quando una di queste pagine viene caricata si attiva il check per verificare se esiste un frameset genitore e, nel caso negativo, viene offerta all’utente la possibilità di visualizzare la pagina all’interno del proprio contesto. Questo si ottiene passando l’URL della pagina base con i frame (framebuilder page) in modo che possa creare un frameset con il file nel posto appropriato, semplicemente aggiungendo il Javascript seguente (logicamente al posto di quello presentato prima) alle pagine figlie,

<script language="Javascript">
var frame_builder = 'index.html'
if (top.document == self.document)
{
if (confirm('This page is normally in a frameset. Do you wish to load it in context?'))
{
window.location = frame_builder +'?'+ window.location.pathname
}
}
</script>

e costruendo il frameset in maniera dinamica come qui di seguito:

<script language="Javascript">
var thatframe = 'somepage.html'
if (location.search)
{
var thatframe = (location.search.substring(1,location.search.length))
}
var frameset = '<frameset rows="50%,50%">'+'<
frameset cols="100%">'+'<frame name="thisframe" src="somepage.html" marginheight=0 marginwidth=0 scrolling=auto noresize>'
+'<
frameset cols="100%">'+'<frame name="thatframe" src= "'+ thatframe +'" marginheight=0 marginwidth=0 scrolling=auto noresize>'
+'</
frameset>'
document.write(frameset)
</script>

Se invece volete che venga effettuato una redirezione in quiet-mode (maniera silenziosa, senza alcuna richiesta all’utente) dovete semplicemente eliminare la domanda di conferma dalle pagine figlie:

if (confirm('This page is normally in a frameset. Do you wish to load it in context?')) {
window.location = frame_builder +'?'+ window.location.pathname
}

Lasciando solo la riga – window.location = frame_builder +’?'+ window.location.pathname avrete un perfetto redirect della vostra pagina nella pagina con frame.

Avrete così risolto un semplicissimo problema, migliorando la navigazione e l’accessibilità del vostro sito, continuando senza problemi ad utilizzare i frame.

(questo articolo è la traduzione di un articolo trovato in rete nella speranza di risolvere questo piccolo ma fastidioso “problema”; lo trovate qui!)

Bookmark and Share

Commenti a “Migliorare la navigazione dei siti a frame”

Lascia un commento

Ti ricordo che è sempre necessario trascrivere le due parole che leggi nel box rosso. È una misura antispam.