Perché i frame sono stati deprecati in HTML5, ma non iFrames?


67

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)?



grazie per il link, ma qual è la piccola differenza tra i due, che gli iframe non sono stati deprecati.

1
Perché i frame sono stati un'idea terribile sin dall'inizio, ma gli iframe hanno alcuni casi d'uso legittimi?
GordonM,

Risposte:


81

Ci sono un paio di idee sbagliate nel tuo post. Innanzitutto, gli elementi framee framesetnon sono deprecati in HTML5, sono obsoleti (cioè sono stati rimossi del tutto).

In secondo luogo, gli elementi framee framesetnon sono la stessa cosa iframedell'elemento, né danno lo stesso output:

  • L' framesetelemento 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' iframeelemento, 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 iframeHTML5 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.


Appunti

Nota 1: l' objectelemento si sovrappone in qualche modo con l' iframeelemento, ma ha un modello di contenuto diverso (destinato principalmente ai plug-in), ha un proprio set di avvertimenti e non ha gli attributi sandboxing iframedell'elemento.


8
Perché gli elementi del set di frame sono dannosi per "usabilità" e "accessibilità", ma gli elementi iframe non lo sono?
meriton - in sciopero

18
@meriton Il set di frame crea una pagina di più documenti, tutti con la stessa priorità: ciò causa sfide per gli screen reader che non sanno su quale documento concentrarsi in un determinato momento. Gli elementi Iframe, d'altra parte, sono semplicemente incorporati in una singola pagina: non è diverso dall'avere un'immagine incorporata.

9
Sfide per gli screen reader: I non vedenti con cui ho parlato hanno detto tutti che preferiscono che la navigazione sia bloccata in una cornice separata (non iFrame) perché possono ignorarla e farla leggere solo quando vogliono. Il vero colpevole degli screen reader è Javascript e AJAX che rendono le pagine completamente inutilizzabili con gli attuali screen reader (beh, le mie informazioni risalgono a circa 10 mesi fa). La mia esperienza personale con gli screen reader supporta questo.
GlenPeterson,

4
Mi chiedevo se molte affermazioni sull'accessibilità spesso richieste nel 2005 non fossero state in ritardo per un aggiornamento. Grazie per il dissenso in merito.
Erik Reppen,

1
@GlenPeterson lo stesso effetto senza elemento frame può essere ottenuto usando CSS per rendere l'elemento block bloccato nel viewport. Ecco come dovrebbe essere fatto se si desidera quel tipo di navigazione. Ha più senso.
netrox,

8

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).


7

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.