2009-05-29 8 views
30

In un sistema basato sul Web che mantengo sul lavoro che è stato recentemente attivato, rende un elemento Object per incorporare una seconda pagina Web all'interno della pagina Web principale. (Effettivamente la pagina web principale contiene il menu e l'intestazione, e le pagine delle applicazioni principali sono l'oggetto)Uso di tag Iframe o Object per incorporare pagine Web in un altro

Per esempio

<object id="contentarea" standby="loading data, please wait..." 
    title="loading data, please wait..." width="100%" height="53%" 
    type="text/html" data="MainPage.aspx"></object> 

più vecchio versioni di questa applicazione utilizzare un IFRAME per fare questo però. Ho scoperto che utilizzando il tag object la pagina Web incorporata si comporta in modo diverso rispetto a quando era precedentemente ospitata in un IFRAME. Ad esempio, in IE i suggerimenti per gli strumenti non funzionano (pubblicherò una domanda a parte!) E sembra che la pagina incorporata non possa accedere alla pagina padre nello script, sebbene possa essere se fosse un IFRAME .

Mi è stato detto che il motivo del privilegio del tag object rispetto all'IFRAME è che l'IFRAME è stato deprecato e quindi non può essere invocato per le versioni future dei browser. È vero però? È preferibile utilizzare il tag Object sull'Iframe per incorporare le pagine Web? O è probabile che l'IFRAME sarà ben supportato nel futuro (molto tempo dopo sono vecchio e grigio, e dopo la vita utile dell'applicazione che mantengo)?

risposta

43

Il IFRAME element è parte di upcoming HTML5 standard. Inoltre, HTML5 è sviluppato dai principali rivenditori di browser (Mozilla, Opera, Safari, IE), che fondamentalmente garantiscono che avremo un elemento IFRAME nel prossimo futuro. Alcuni di loro hanno già il supporto per alcuni elementi HTML5, come AUDIO e VIDEO e alcune nuove API JavaScript.

È anche vero che the OBJECT element is in the draft, ma questo perché IFRAME e OBJECT avranno scopi diversi. Gli IFRAMES sono principalmente progettati per applicazioni Web sandboxing.

Quindi, il mio consiglio è di utilizzare IFRAME anziché OBJECT.

+1

+1 per riferimenti e chiarendo che oggetto e iframe fanno diversi lavori – annakata

8

Gli IFRAME non fanno parte della DTD XHTML 1.0 Strict. Sono totalmente validi in HTML 4 e XHTML 1.0 Transitional, credo. Solo per questi motivi, IFRAME continuerà a essere supportato per un lungo periodo di tempo.

Numerosi bookmarklet e codice di analisi utilizzano ancora IFRAME.

2

Anche se le specifiche del W3C possono indicare che il tag IFRAME viene deprecato, (in XHTML, almeno in ogni caso), gli sviluppatori di browser non seguono necessariamente esattamente ciò che dicono quelle specifiche (IE6 chiunque?)

come l'uso di IFRAME è così prevalente al momento, e il W3C non sembra poter decidere se sono parte del futuro o no (HTML 4.01 vs XHTML), sono abbastanza sicuro che siano l'implementazione più sicura da usare per quasi tutti i browser.

5

Se si intende inserire una pagina HTML, qui è una notevole differenza tra iframe e object:

  • con iframe aggiornamento src cambierà la cronologia del browser (l'aggiunta di una nuova voce)
  • con object aggiornamento data non cambierà la cronologia del browser

Anche sembra trascinare & goccia d Non funziona se la pagina è incorporata nel tag object, ma funziona nel tag iframe.L'ho notato personalmente utilizzando react-draggable e vedo qualcuno che ha avuto lo stesso problema (https://stackoverflow.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working)

Problemi correlati