Attenzione!
Chi usa Internet Explorer 6 o antecedenti avrà difficoltà nel visualizzare correttamente gli esempi, ma può scaricare il file a fondo pagina con il codice correttamente indentato.
Notizia del 03/05/2007
I frames, strumento ormai in disuso nel web, può essere solo amato e usato indiscriminatamente oppure odiato e quindi avversato in ogni forma: in un certo senso il W3C ha optato per la seconda possibilità.
Ma partiamo dall'inizio, da quando per risparmiare tempo di caricamento e banda in modo da accorciare i tempi d'attesa dei navigatori fu creato un sistema con il quale si caricava una sola volta per esempio l'intestazione del sito e il menu di navigazione principale e man mano soltanto le pagine interne: questo sistema erano i frames.
I frames funzionano in questo modo: l'index - pagina di accesso principale al sito - non è una pagina vera e propria, ma una specie di griglia a 3 o 4 fori (il numero può comunque variare, non c'è limite); in ogni foro è richiamata una diversa pagina: in quello in alto una pagina con il logo dell'azienda e l'intestazione, in quello laterale una seconda pagina con il menu di navigazione principale e così via.
Man mano che si procede nella navigazione, non sono sostituite tutte le pagine, ma solo quella che cambia di volta in volta: intestazione e menu insomma rimangono al loro posto.
Si è però capito però che questo sistema è altamente controproducente principalmente per un motivo che però da solo porta a gravi disservizi su diversi fronti: quando un navigatore si trova in una delle pagine presa da sola, non ha modo di proseguire.
Come succede una cosa simile? Beh, ad esempio quando passa il motore di ricerca: notoriamente tende a indicizzare la parte più corposa del sito e questa è la pagina con il contenuto del sito... ma questa pagina manca del menu di navigazione, che come dicevo si trova da un'altra parte e il navigatore non sa come procedere, finendo per visitare solo una minima parte del sito stesso.
Per la stessa ragione, un sito a frames non può essere agevolmente visitato dai browser vocali: al massimo si può visitare una pagina e poi ci si ferma.
Siccome la mera descrizione è poco chiara, ho rispolverato uno scheletro dal mio armadio di webpasticciona: il primo e l'unico sito che abbia mai fatto a frames e proprio per capirne il funzionamento nell'ormai lontano 2001 o giù di lì.
Premesso che il sito è talmente messo male che i motori manco l'hanno indicizzato, poniamo invece che qualcuno ne abbia trovato una delle pagine in Google e che abbia deciso di seguirne il link: tutto quel che si troverà davanti saranno alcune frasi su una pagina vuota:
E siccome non tutti i navigatori hanno le conoscenze necessarie - o magari anche solo l'interesse - a cancellare una parte di indirizzo in modo da risalire l'albero del sito, se ne uscirà andando a visitare un altro sito e perdendosi questa "mmmeraviglia" (ironico, eh?):
Come dicevo, l'organo preposto alla stesura della grammatica dei linguaggi e alla preparazione degli standard per il web (il W3C linkato sopra) ha deprecato i frames (non ne è previsto l'uso nei linguaggi più rigorosi), anche se volendo è ancora possibile usarli dichiarando un linguaggio meno restrittivo.
Non è però per nulla conveniente, perché i loro pochissimi vantaggi sono facilmente ottenibili con l'uso corretto dei CSS, i fogli di stile a cascata, e della formattazione esterna che permettono di ottenere pagine complete e velocissime da caricare perché molto leggere.
Torna a inizio pagina
I campi con * sono obbligatori.
Torna a inizio pagina
Torna a inizio pagina
Commenti
1 - Scritto da Marco GRAZIA il 03/05/2007 alle 14:18
Ascolta: l'uso dei frame non era stato implementato per velocizzare il caricamento dei siti, questa è una leggenda metropolitana anche banale oltre che sbagliata.
Infatti, con una pagina a frame ti ritrovi nello stesso lasso di tempo a dover caricare più pagine per volta in luogo di una sola.
Ma non solo, comunque lo si veda dover caricare una pagina in un frame o singolarmente ci vuole sempre lo stesso tempo, anche considerando il fatto che i meccanismi di caching che i browser hanno da sempre implementati fanno sì che gli elementi della pagina che erano stati già scaricati non venissero più richiamati dal server (vedi il logo aziendale ad esempio).
E solo la cattiva programmazione, come ad esempio il javascript embedded nella pagina, piuttosto che in un file separato, faceva sì che parti delle pagine che si potevano effettivamente alleggerire poi di fatto non lo fossero.
I frame vennero inventati per lo più per dare la possibilità di avere pagine composite in modo da creare quello che poi farà l'elemento iframe inventato da Microsoft.
O come dice lo stesso sito del W3C:
http://www.w3.org/TR/html4/present/frames.html
"HTML frames allow authors to present documents in multiple views, which may be independent windows or subwindows. Multiple views offer designers a way to keep certain information visible, while other views are scrolled or replaced. For example, within the same window, one frame might display a static banner, a second a navigation menu, and a third the main document that can be scrolled through or replaced by navigating in the second frame."
Ovvero dare la possibilità al navigante di avere una parte della pagina scrollabile ed una con informazioni fisse. (vedi un lettore di news reader ad esempio)
Poi però tutti li usarono (e anche io) per progettare siti come quello che hai mostrato tu, credendo a torto che così si velocizzava la navigazione.
Il motivo principale per cui sono stati decretati dal WAI inaccessibili è dovuto più che altro al fatto che per la cattiva abitudine di usare tools automatici per creare le pagine di un sito, le persone non mettevano mai dei titoli significativi alle pagine, così che la navigazione con i reader di schermo diveniva con i frames difficile e frammentaria.
A questo punto il W3C ha deciso di farli diventare obsoleti, nell'ottica di rendere il linguaggio di markup sempre più incline all'accessibilità di un sito, e rendere più difficile agli sviluppatori la possibilità di realizzare siti inaccessibili anche a superman.
M.
PS scusa se sembro saccente, in realtà lo sono :-)
PPS esempio del WAI sui frames, realizzato a frames:
http://www.w3.org/WAI/wcag-curric/sam91-0.htm
2 - Scritto da reb il 03/05/2007 alle 14:22
qualunque sia il motivo della loro creazione sono ormai riconosciuti come inutili e peggio controproducenti e per quel che mi riguarda ho fatto i salti di gioia quando sono spariti da xhtml strict, ma soprattutto non cambia il messaggio che volevo mandare: NON usiamoli :D
3 - Scritto da Marco GRAZIA il 05/05/2007 alle 19:19
Perdonami, so che ti sto rompendo un po' le uova nel paniere, so che questi tutorial sono volutamente semplici e so infine, che non ami i frameset, ma mi fai capire da dove sono spariti?
Perché io non ho mai visto scritto, ne che lo xhtml strict non possa stare dentro un frame, ne che la doctype definition framset abbia qualcosa a che fare con lo strict. E ne che sia sparita o deprecato l'uso da parte del World Wide Web Consortium.
http://www.w3.org/QA/2002/04/valid-dtd-list.html
Se sbaglio ti prego di farmi notare dove è scritta una cosa del genere, perché se così è, devo rivedere molte cose.
Buon fine settimana, Marco.
4 - Scritto da reb il 05/05/2007 alle 21:20
ehm... ok, ho semplificato troppo e ho finito con lo scrivere un'idiozia intendendo un'altra cosa: chiedo venia :)
a ogni modo, che senso ha usare il frameset in abbinata con lo strict, considerando che lo strict ha tolto di mezzo il target=_blank?
voglio dire: "filosoficamente", passami il termine, lo trovo incongruente: ha molto piu' senso usare il frameset in abbinata con il transitional
OVVIAMENTE nella pagina dei frames uso il frameset e in quelle caricate il transitional... nulla mi vieta di usare lo strict in quelle caricate, ma considerando quanto detto sopra, mi pare un po' un controsenso
poi probabilmente ricordo male, ma mi pare che l'idea del transitional sia di favorire il passaggio dal vecchio html e lo strict di passare a un linguaggio piu' pulito e "corretto", giusto? ripeto: magari ricordo male, ma mi pareva che l'idea delle varie versioni fosse quella :)
ma sii gentile, non togliere il focus dal senso del mio thread: i frames SONO CONTROPRODUCENTI, sono inutili, sono una scelta sbagliata
non ho ancora trovato un sito che sia uno che usi i frames e che ne abbia un qualche vantaggio rispetto a un'eventuale versione senza frames e QUESTO era il senso del post, al di la' di qualsiasi altra considerazione
se pero' conosci un sito a frames che abbia avuto reali vantaggi dalla scelta, sono curiosa di conoscerne l'indirizzo per poterlo visitare :D
5 - Scritto da Marco GRAZIA il 08/05/2007 alle 14:04
No ma infatti, tu hai ragione a dire che non si deve togliere il focus dal discorso e infatti ho chiesto venia sin da subito, solo che leggere delle inesattezze poi danno adito a creare ancora altre inesattezze o peggio creare leggende, la dove non c'è nulla di tutto ciò.
Che i frame siano stati lo specchio di un'epoca e concordo con te furono usati a sproposito già allora per colpa proprio di tali inesattezze.
Dovevano permettere di creare un sito dove parti di esso non si modificavano alle scelte dell'utente, creando di fatto una specie di applicazione o meglio, l'idea di un'applicazione simmetrica, dove da una parte il cliente chiedeva un'informazione e dall'altra gli veniva fornita in uno spazio l'informazione voluta.
Oggi tutto questo si chiama Ajax, allora lo si realizzava con i frame e solo in modo parziale.
Credo che il W3C li abbia mantenuti per una sorta di retrocompatibilità e difatti se ne dibatte al suo interno se mantenerli o meno.
Però anche tu non fare l'errore di pensare che frame = transictional, le DTD sono tre: frame, transictional e strict; l'uso di file "strict" all'interno dei frame è dovuto al fatto che con essi si possono realizzare siti accessibili, e credimi, si può fare.
Ma è meglio lasciar perdere, oggi sarebbero comunque anacronistici.
M.
PS: non ti arabbiare :-)
6 - Scritto da reb il 08/05/2007 alle 18:32
no non mi arrabbio, si so la differenza (ne ho scritto nel post sulle dtd) e vedo che comunque alla fine siamo tutti e due dello stesso parere sui frames :D