Perché i frame sono stati deprecati in HTML5, ma non iFrames? Dopotutto, non c'è quasi nessuna differenza tra i due. In molti casi l'utilizzo di uno di essi darebbe lo stesso risultato (scusatemi se sbaglio)?
Perché i frame sono stati deprecati in HTML5, ma non iFrames? Dopotutto, non c'è quasi nessuna differenza tra i due. In molti casi l'utilizzo di uno di essi darebbe lo stesso risultato (scusatemi se sbaglio)?
Risposte:
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 del tutto).
In secondo luogo, gli elementi frame
e frameset
non sono la stessa cosa iframe
dell'elemento, né danno lo stesso output:
L' frameset
elemento sostituisce l'elemento body nelle pagine come mezzo per includere un diverso modello di documento per le pagine Web: sono dannose per l'usabilità e l'accessibilità e ciò che intendevano realizzare sono stati completamente sostituiti da CSS e onnipresente sviluppo lato server.
L' iframe
elemento, d'altra parte, non sostituisce il corpo di una pagina. Funziona come un mezzo per includere un nuovo contesto di navigazione incorporato in un blocco di contenuti. Non presenta gli stessi problemi di usabilità o accessibilità del modello di set di frame e viene utilizzato quasi ovunque sia necessario includere un contesto di navigazione incorporato (i widget sono l'esempio più prolifico). 1
In iframe
HTML5 assume anche funzionalità aggiuntive in quanto può essere sandbox , consentendo al documento principale di decidere cosa viene eseguito al suo interno. Ciò consente una certa misura di sicurezza per il documento principale (e per i visitatori del documento principale) quando si incorporano contenuti non attendibili.
Nota 1: l' object
elemento si sovrappone in qualche modo con l' iframe
elemento, ma ha un modello di contenuto diverso (destinato principalmente ai plug-in), ha un proprio set di avvertimenti e non ha gli attributi sandboxing iframe
dell'elemento.
Le cornici (set di cornici) fungono 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 sottopagina specifica, ecc.
D'altra parte, iframe non romperà nulla se utilizzato correttamente perché destinato al contenuto sandbox (ad es. Annunci).
I set di frame vengono spesso utilizzati in modo tale da violare il principio fondamentale del Web: ogni documento ha un singolo URL. Ciò porta a problemi con collegamenti, segnalibri, motori di ricerca ecc.
L'uso tipico di un set di frame sarebbe una cornice in alto con un logo o un'intestazione, una cornice a lato con un menu e una cornice di contenuto. Ma i motori di ricerca indicizzano le singole pagine, quindi quando trovi una pagina su Google, si collegherebbe direttamente alla pagina del 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 determinata 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 è diventato popolare in primo luogo è perché hanno consentito un'intestazione e un menu posizionati staticamente con un'area di scorrimento del contenuto. Ma questo può essere ottenuto molto più facilmente con i CSS oggi. Inoltre, i frame ti hanno permesso di utilizzare elementi comuni come loghi e menu su più pagine senza utilizzare alcuna codifica lato server. Questo era un vantaggio in un momento in cui la codifica lato server era noiosa e soggetta a errori (ad esempio script CGI) e molti host non consentivano affatto lo scripting lato server. Oggi con Content Management Systems (CMS) e migliori piattaforme lato server, questo è molto meglio gestito sul lato server.
Quindi in pratica non ci sono vantaggi nell'usare un set di frame, solo molti problemi.
Gli IFrame possono essere utilizzati nello stesso modo in cui sono stati utilizzati i set di frame e in tal caso comportano gli stessi problemi. Ma ci sono anche molti usi legittimi di iframe che non portano agli stessi problemi.