Perché i frame sono stati deprecati in HTML5, ma non iFrame? Dopo tutto, non c'è quasi nessuna differenza tra i due. In molti casi, l'uso di uno di essi darebbe lo stesso risultato (scusami se ho torto)?
Ci sono un paio di idee sbagliate nel tuo post. Innanzitutto, gli elementi frame
e frameset
non sono deprecati in HTML5, sono obsoleti (cioè, sono stati rimossi completamente).
In secondo luogo, gli elementi frame
e frameset
non sono la stessa cosa dell'elemento iframe
, né forniscono lo stesso risultato:
L'elemento frameset
sostituisce l'elemento body nelle pagine come mezzo per includere un modello di documento diverso per le pagine Web: sono dannosi per l'usabilità e l'accessibilità e ciò che intendevano realizzare sono stati completamente sostituiti da Sviluppo CSS e onnipresente lato server.
L'elemento iframe
, d'altra parte, non sostituisce il corpo di una pagina. Agisce come mezzo per includere un nuovo contesto di navigazione incorporato all'interno di un blocco di contenuti. Non risente degli stessi problemi di usabilità o accessibilità del modello di frame e viene utilizzato quasi ovunque sia necessario includere un contesto di esplorazione incorporato (i widget rappresentano l'esempio più prolifico). 1
Anche il iframe
in HTML5 assume funzionalità aggiuntive in quanto può essere sandboxed , che consente al documento principale di decidere cosa viene eseguito all'interno di esso. Ciò consente una certa misura di sicurezza per il documento principale (e per i visitatori del documento principale) quando si incorpora il contenuto non sicuro.
Nota 1: l'elemento object
si sovrappone in qualche modo con l'elemento iframe
, ma ha un diverso modello di contenuto (che è inteso principalmente per i plugin), ha il suo insieme di avvertimenti, e non ha gli attributi sandboxing che l'elemento iframe
ha.
Frames (frameset) funge da documento. Viene rimosso perché interrompe la struttura e la navigazione dei documenti HTML. Per esempio. hai collegamenti in un frame, contenuto nell'altro, non puoi aprire il link dalla pagina in una nuova finestra, non puoi collegarti a una specifica sotto-pagina, ecc.
D'altra parte gli iframe non si romperanno nulla se usati correttamente perché sono destinati al contenuto della sandbox (ad es. annunci).
I set di frame sono spesso usati in un modo in cui infrangono il principio fondamentale del web, che ogni documento ha un singolo URL. Ciò porta a problemi di collegamento, segnalibri, motori di ricerca, ecc.
L'uso tipico di un set di cornici sarebbe una cornice in alto con un logo o un'intestazione, una cornice sul lato con un menu e una cornice di contenuto. Ma i motori di ricerca indicizzano le singole pagine, quindi quando trovi qualche pagina in google, vorrebbe direttamente alla pagina di contenuto senza il set di frame, quindi perdi la navigazione. Il problema con collegamenti e segnalibri è che in genere si desidera collegare o aggiungere un segnalibro a una particolare pagina di contenuto all'interno del set di frame, senza perdere il set di frame stesso. Non è un modo semplice per farlo.
Il motivo per cui i set di frame sono diventati popolari in primo luogo era perché consentivano un'intestazione e un menu posizionati in modo statico con un'area di contenuto scorrevole. Ma questo può essere ottenuto molto più facilmente con i CSS oggi. Inoltre i frame consentono di utilizzare elementi comuni come logo e menu su più pagine senza utilizzare alcuna codifica sul lato server. Questo era un vantaggio al momento in cui la codifica lato server era noiosa e soggetta a errori (cgi-scripts!) E molti host non consentivano affatto lo scripting lato server. Oggi con CMS e piattaforme server-side migliori questo è gestito molto meglio dal lato server.
Quindi fondamentalmente non ci sono vantaggi per il frameset ma molti problemi.
Gli iframes possono essere usati nello stesso modo in cui sono stati utilizzati i frameset, e in questo caso portano anche agli stessi problemi. Ma ci sono anche molti usi legittimi di iframe che non portano agli stessi problemi.
Leggi altre domande sui tag html5