2009-04-16 16 views
78

Ricevere messaggi contraddittori su questo, spero che non lo siano. Non riesco a immaginare il supporto perché si fermerebbe, dal momento che un sito di milioni di dollari li usa.Gli IFrame (HTML) sono obsoleti?

Alcune domande su che:

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

risposta

49

Nel mio parere il W3C ha saltato la pistola in dumping iframe dai doctypes Strict HTML e XHTML. In teoria dovresti usare l'elemento <object> per aggiungere oggetti estranei al tuo documento, ma le differenze e le limitazioni del browser hanno reso questo un non-start per molti sviluppatori. Con l'HTML 5 molto più pragmatico (che è ancora una bozza), gli iframe sono tornati e hanno anche due nuovi attributi: seamless e l'intrigante sandbox.

+0

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

+0

@Xeoncross Firefox e chrome do: https://developer.mozilla.org/en/Using_files_from_web_applications – chesles

22

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

ragioni per usare iframe:

  • E 'fantastico per compartimentare roba di altre persone da altri domini, ma non si integra perfettamente. (fogli di stile, javascript ecc ...)
  • L'integrazione di contenuti multimediali può talvolta essere semplificata tramite un iframe anziché utilizzare il tag embed.
  • Casi davvero speciali come il caso di Gmail in cui vengono utilizzati per la gestione di suoni e cronologia.

Vorrei anche rispondere che non è necessario rimuovere gli iframe, è un tag necessario e sarà disponibile per un po '.

7

Gli IFram sono utilizzati molto con AJAX. Ad esempio, GMail usa nove IFram nascosti che io credo.

+5

Conta cinque iframe. Uno non è nascosto e in effetti uno di questi è quasi l'intera vista. Gli IFrame non sono usati tipicamente con Ajax (comunque non in nessuno dei quadri principali). Gmail usa iframe per cose come: tracciamento cronologico, suono (dispari) e una sorta di disegno su tela. – cgp

+0

Stavo per leggere un articolo che ho letto alcuni anni fa. –

72

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

per rispondere alle vostre domande:

  1. s (come fotogrammi in generale) sono il più delle volte non è facile da usare:
    • Essi non consentono un facile accesso dei contenuti il frame tramite un URL (senza perdere il contenuto al di fuori del frame almeno).
    • Most "technophobe" gli utenti sono irritati dai frame.
    • Per quanto ne so sono più lenti per il rendering per i browser
  2. alternative includono la generazione di pagine dinamiche (SSI, PHP, Rails e così via) e l'utilizzo di JavaScript/AJAX per modificare il contenuto di esempio a <div>

Per essere chiari: sto parlando di come elemento di interfaccia.Non è un elemento nascosto per caricare altre cose come ad es. Google Mail fa.

+28

+1 per il fatto che Google utilizza iframe per scopi altamente specializzati. – cgp

2

Ho appena cambiato un sito da un normale Frameset in Iframes, poiché i normali frame non potevano fare ciò di cui avevo bisogno. Non ha causato problemi con il resto della base di codice.

23

Iframes sono obsoleti per l'impaginazione. Non usarli mai al posto di un buon layout CSS, anche il layout basato su tabelle è migliore.

Buone ragioni per utilizzare gli iframe sono:

  • annunci: adwords per esempio, utilizza questa tecnica, è un bene per l'incapsulamento - annuncio css non distruggere la vostra pagina.
  • iframe nascosto: può essere usato per centinaia di cose utilizzabili, come il monitoraggio, ajax-alternative, ecc
+33

*** NON utilizzare iframe per AdWords, si tratta di una violazione di TOS. *** http://www.scribd.com/doc/97655/15-Common-Mistakes-by-Google-Adsense-Publishers-that-Violate-Terms-of-Service – cgp

+34

altCognito: AdWords utilizza iframe, non io:) Non volevo dire mettere iframe adword in un altro iframe. – Thinker

+7

So che è un errore comune là fuori (quindi tutti gli articoli) quindi ho voluto segnalarlo per assicurarmi che le persone capissero quello che stavi dicendo. – cgp

5

Alla mia precedente azienda, abbiamo fornito un'applicazione ospitata che i clienti avrebbero integrare nei loro siti web . A volte, usavano un IFrame per fare ciò, adattando la nostra pagina ospitata ai loro progetti esistenti. A volte ciò avveniva senza problemi (ad esempio, l'IFrame non aveva bordi o barre di scorrimento, sembrava solo parte della pagina). Ho considerato questo un buon uso del tag.

+0

Gli iframe sono un must con le cose che devi mettere nei siti web dei clienti con il tuo stile e Javascript, che il codice dell'utente non si romperà. I CSS possono essere sovrascritti facilmente 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 quelli sono limitati. In particolare, incorporare funzionalità comuni su più siti.

Ad esempio, ho un cliente che gestisce un numero di 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 la tua scelta di tartan (ridi se vuoi, ma gli scozzesi valgono 700 milioni di dollari l'anno per la nostra economia). Il database dietro questo è sorprendentemente grande (quasi diecimila righe nei nomi principali e nelle tabelle tartan) e aggiornato abbastanza regolarmente.

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

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

7

Gli IFram non sono guasti, ma I set di frame/frame stanno morendo.

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

Con tutti i mezzi usare IFrames, ma IMHO stare lontano da Framesets/Frames.

4

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

Attualmente sono l'unico modo semplice per fornire l'isolamento per le applicazioni JavaScript che vengono estratti da più domini/fornitori.

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

Mentre hanno i loro svantaggi, gli iframe forniscono una soluzione pragmatica ai problemi più comuni sul web. Dovrei indovinare che saranno in giro per un po 'di tempo a venire.

0

Lavoro per un'azienda che ha utilizzato frame per tutto, da menu a discesa, elenchi, blocchi di contenuti, ecc., Solo per coprire le complessità dei moduli web .net. L'applicazione è molto lenta e funziona solo su IE. Non farlo.

5

Cavalli per corsi ... <iframe> s sono come qualsiasi altra cosa ... per lo scopo giusto sono lo strumento giusto; per lo scopo sbagliato sono un brutto scherzo, o peggio.

In Ajax, <div> s sono spesso il contenitore più appropriato. In alcuni punti l'attività di passaggio di contenuti esterni come parte del tuo sito, come supportato da <iframe> s, è inappropriata.

Il mio team ha utilizzato un <iframe> l'altro giorno come un modo ideale per dare agli utenti l'accesso alla loro storia e-mail HTML - le e-mail erano completi <html> pagine che abbiamo voluto inserire facilmente nel nostro template web . <iframe> s erano assolutamente perfetti per presentare quei dati] '.

D'altra parte, l'iframe > s dovrebbe quasi sempre essere rimosso o disattivato in qualsiasi contenuto inviato dall'utente che viene restituito sul sito, poiché in tale contesto rappresentano un problema di sicurezza importante.

2

Problemi di conformità e sicurezza possono anche spingerti a utilizzare gli iframe; I carrelli acquisti sono implementazioni popolari basate su IFrame quando si desidera incorporare visivamente un carrello acquisti come parte di alcune pagine Web senza assumersi la piena responsabilità per il lato elaborazione dei pagamenti delle cose.

Generalmente distribuiamo un Iframe per integrare le nostre attività di eCommerce e i clienti come come può essere chiavi in ​​mano.

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 visualizzato in un IFrame (perché c'erano altre cose che dovevamo mostrare sulla pagina oltre al solo PDF) ed era in grado di farlo visualizzare bene usando Object.

Cosa c'era:

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

E':

<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 oggetto non è stato un sostituto adeguato per riempire il requisito di essere in grado di stampare solo la parte in formato PDF della pagina.

un iframe è come una finestra separata all'interno della pagina (una finestra all'interno di una finestra, in fondo), e una volta che si ottiene l'oggetto finestra, è possibile chiamare .print() su di esso, come:

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

IFrame ha una proprietà contentWindow, è ciò che rende la stampa solo quella parte possibile. L'oggetto non ha una proprietà contentWindow, quindi non c'è modo di stampare solo la sezione della pagina.

Quindi, sembra che se si utilizza solo IFrame per visualizzare qualcosa, ci sono altri tag come Oggetto che possono essere utilizzati al posto. Ma se hai bisogno di interagire con i contenuti dell'IFrame in alcuni modi, allora IFrame potrebbe essere necessario.