Gli IFrame (HTML) sono obsoleti? [chiuso]


91

Ricevendo messaggi contraddittori su questo, spero che non lo siano. Non riesco a immaginare che il supporto si fermi, dal momento che un trilione di siti li usano.

Alcune domande aggiuntive a riguardo:

  1. Perché dovrebbero eliminare gradualmente questo tag?
  2. Qualche alternativa per questo?


Qualche aggiornamento a questo proposito? Questa domanda è stata posta e ha risposto nel 2009; ora è il 2020.
Kolob Canyon

Risposte:


53

A mio parere il W3C ha saltato la pistola scaricando iframe dai doctype Strict HTML e XHTML. In teoria useresti l' <object>elemento per aggiungere oggetti estranei al tuo documento, ma le differenze e le limitazioni del browser lo hanno reso un punto di partenza per molti sviluppatori. Con l'HTML 5 molto più pragmatico (che è ancora una bozza), gli iframe sono tornati e hanno anche due nuovi attributi: seamlesse l'intrigante sandbox.


Fantastico, spero solo che i browser inizino a supportare il caricamento di file AJAX, quindi non è necessario utilizzare iframe o flash per questo.
Xeoncross


2
Aggiornamento: l'attributo semless è stato rimosso da html5. Vedi: caniuse.com/#feat=iframe-seamless
Gabe

76

Il supporto per <iframe>è ancora presente in HTML 5, quindi non credo che questo cambierà nel prossimo futuro.

Per rispondere alle tue altre domande:

  1. <iframe>s (come i frame in generale) sono il più delle volte non user-friendly:
    • Non consentono un facile accesso al contenuto nel frame tramite un URL (senza perdere il contenuto almeno al di fuori del frame).
    • La maggior parte degli utenti "tecnofobo" sono irritati dai frame.
    • Per quanto ne so, sono più lenti da renderizzare per i browser
  2. Le alternative includono la generazione di pagine dinamiche (SSI, PHP, Rails e così via) e l'utilizzo di JavaScript / AJAX per modificare i contenuti, ad es. <div>

Per essere chiari: sto parlando di <iframe>un elemento dell'interfaccia. Non è un elemento nascosto per caricare altre cose come ad esempio Google Mail.


29
+1 per il punto che Google utilizza iframe per scopi altamente specializzati.
cgp

25

Gli iframe sono obsoleti per il layout di pagina. Non usarli mai al posto di un buon layout CSS, anche il layout basato su tabella è migliore.

Buoni motivi per utilizzare iframe sono:

  • Annunci : adwords, ad esempio, utilizza questa tecnica, è utile per incapsulare: l'annuncio css non distruggerà la tua pagina.
  • iframe nascosto : può essere utilizzato per centinaia di cose utilizzabili, come tracciamento, ajax-alternativa, ecc.

35
*** NON utilizzare iframe per adwords, è una violazione dei TOS. *** scribd.com/doc/97655/…
cgp

37
altCognito: AdWords utilizza iframe, non io :) Non intendevo inserire l'iframe di adword in un altro iframe.
Thinker

7
So che è un errore comune là fuori (da qui tutti gli articoli), quindi volevo segnalarlo per assicurarmi che le persone capissero quello che stavi dicendo.
cgp

5
Gli iframe sono un must quando si includono contenuti complicati che devono essere serviti da un altro dominio e non devono essere manipolati con il codice CSS o JS della pagina corrente.
vsync

4
Quello di cui parli non ha nulla a che fare con gli iframe. Il punto è: utilizzi un iframe per inserire un contesto di navigazione esterno nidificato. Non lo usi per il "layout di pagina". Se ho bisogno di un contesto di navigazione nidificato, come nel mondo dovrei usare invece "un buon layout CSS"? Non ha senso.
Chris B

24

Gli IFrame non sono obsoleti, ma i motivi per utilizzarli sono rari.

Motivi per l'utilizzo di iframe:

  • È ottimo per isolare le cose di altre persone da altri domini, ma non si integra perfettamente. (fogli di stile, javascript ecc ...)
  • L'integrazione di contenuti multimediali a volte può essere semplificata tramite un iframe anziché utilizzare il tag di incorporamento.
  • In realtà, casi davvero specializzati come il caso di Gmail in cui lo usano per i suoni e la gestione della cronologia.

Vorrei anche rispondere che non è necessaria la rimozione di iframe, è un tag necessario e sarà disponibile per un po '.


12

Ho visto molti forum che suggeriscono il tag Object in sostituzione di IFrame, che probabilmente funziona nella maggior parte dei casi.

Ad esempio, avevo un PDF mostrato in un IFrame (perché c'erano altre cose che dovevamo mostrare sulla pagina oltre al solo PDF) e sono riuscito a farlo visualizzare bene usando Object.

Cosa era:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>

Divenne:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480">
  <p>[Show this message if displaying the PDF did not work]</p>
</object>

Ma Object non era un sostituto adatto per soddisfare il requisito di poter stampare SOLO la porzione PDF della pagina.

Un IFrame è come la propria finestra all'interno della pagina (una finestra all'interno di una finestra, fondamentalmente), e una volta ottenuto l'oggetto finestra, puoi chiamare .print () su di esso, come:

jQuery("#confirmed_pdf").contentWindow.print();

IFrame ha una proprietà contentWindow, che è ciò che rende possibile la stampa solo di quella parte. Object non dispone di una proprietà contentWindow, quindi non è possibile stampare solo la sezione della pagina.

Quindi, sembra che se stai usando IFrame per visualizzare qualcosa, ci sono altri tag come Object che possono essere usati invece. Ma se è necessario interagire con il contenuto dell'IFrame in determinati modi, potrebbe essere necessario IFrame.


7

Gli IFrame sono molto usati con AJAX. GMail, ad esempio, utilizza nove IFrame nascosti, credo.


5
Conto cinque iframe. Uno non è nascosto, e in effetti, uno di loro è quasi l'intera vista. Gli IFrame non vengono usati con Ajax in genere (non in nessuno dei principali framework comunque). Gmail utilizza iframe per cose come: monitoraggio della cronologia, suono (dispari) e una sorta di disegno su tela.
cgp

Stavo solo leggendo un articolo che ho letto alcuni anni fa.
John Topley

7

IFrame non sono morti, ma Frameset / Frames stanno morendo.

Nelle ultime 2 versioni di IE (IE7 / IE8) lo zoom nei frame (non IFrames) ha creato risultati disastrosi.

Sicuramente usa IFrames, ma IMHO stai lontano da Frameset / Frames.


5

Nella mia azienda precedente, fornivamo un'applicazione in hosting che i clienti avrebbero integrato nei propri siti web. A volte, usavano un IFrame per farlo, adattando la nostra pagina ospitata ai loro progetti esistenti. A volte questo veniva anche fatto senza problemi (cioè l'IFrame non aveva bordi o barre di scorrimento, sembrava solo una parte della pagina). Ho ritenuto che questo fosse un buon uso del tag.


Gli iframe sono un must per gestire le cose che devi inserire nei siti Web dei clienti con il tuo stile e Javascript, in modo che il codice dell'utente non si interrompa. CSS può essere facilmente sovrascritto e JS può causare conflitti a volte (in rari casi) quindi è meglio per un approccio "Sistema chiuso".
vsync

5

Possono essere estremamente utili in alcune circostanze, ma sono limitate. In particolare incorporando funzionalità comuni su più siti.

Ad esempio, ho un cliente che gestisce diversi siti di e-commerce di prodotti scozzesi. Come parte di questo abbiamo sviluppato un paio di semplici applicazioni per individuare possibili nomi di clan dal tuo cognome o dalla tua scelta di tartan (ridacchia se lo desideri, ma i tartan valgono 700 milioni di dollari all'anno per la nostra economia). Il database dietro a questo è sorprendentemente ampio (quasi diecimila righe nei nomi principali e nelle tabelle tartan) e aggiornato abbastanza regolarmente.

Quindi abbiamo le applicazioni configurate per essere eseguite su un sito Web e quindi incorporate negli altri nostri siti Web utilizzando un iframe, consentendo il semplice passaggio di parametri javascript in modo da poter integrare la selezione di un tartan o di un clan con funzionalità sul sito di incorporamento. L'iframe è impostato come noborder in modo che appaia completamente trasparente all'utente finale.

Ovviamente ci sarebbero altri modi per farlo, ma l'uso di un iframe è semplice e robusto. E di certo non è obsoleto.


5

I cavalli da corsa ... i <iframe> sono come qualsiasi altra cosa ... per lo scopo giusto sono lo strumento giusto; per lo scopo sbagliato sono un brutto hack, o peggio.

In Ajax, i <div> sono spesso il contenitore più appropriato. In alcuni luoghi l'attività di spacciamento di contenuti esterni come parte del proprio sito, supportata da <iframe> s, è inappropriata.

Il mio team ha utilizzato un <iframe> l'altro giorno come un modo ideale per fornire agli utenti l'accesso alla loro cronologia di posta elettronica HTML: le e-mail erano pagine <html> complete che volevamo inserire facilmente nel nostro modello web. I <iframe> erano assolutamente perfetti per presentare quei dati] '.

D'altra parte, i <iframe> dovrebbero quasi sempre essere rimossi o disabilitati in qualsiasi contenuto inviato dall'utente che viene restituito al sito, perché in quel contesto sono un grosso problema di sicurezza.


4

La specifica del gadget di Google attualmente si basa su iframe: http://code.google.com/apis/gadgets/docs/spec.html

Attualmente sono l'unico modo semplice per fornire isolamento per le app javascript che vengono estratte da più domini / provider.

Inoltre, molti dei widget che le persone incorporano nei propri siti Web da terze parti utilizzano iframe.

Sebbene abbiano i loro svantaggi, gli iframe forniscono una soluzione pragmatica ai problemi comuni sul web. Devo indovinare che saranno in giro per un po 'di tempo a venire.


2

Ho appena cambiato un sito da un normale set di frame a iframe poiché i frame normali non potevano fare ciò di cui avevo bisogno. Non ha causato problemi con il resto del codice.


2

Anche i problemi di conformità e sicurezza possono indurti a utilizzare Iframe; I carrelli degli acquisti sono implementazioni popolari basate su IFrame quando si desidera incorporare visivamente un carrello degli acquisti come parte di alcune pagine Web senza assumersi la piena responsabilità dell'elaborazione dei pagamenti.

Di solito forniamo un Iframe per integrare la nostra roba di eCommerce e ai clienti come può essere chiavi in ​​mano.


0

Lavoro per un'azienda che utilizzava frame per qualsiasi cosa, dai menu a discesa, agli elenchi, ai blocchi di contenuto, ecc. Solo per coprire le complessità dei moduli web .net. L'applicazione è molto lenta e funziona solo su IE. Non farlo.

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.