<iframe>
L'elemento iframe rappresenta un contesto di esplorazione nidificato. HTML 5 standard - "L' <iframe>
elemento"
Utilizzato principalmente per includere risorse da altri domini o sottodomini, ma può essere utilizzato anche per includere contenuti dello stesso dominio. Il punto <iframe>
di forza è che il codice incorporato è "attivo" e può comunicare con il documento principale.
<embed>
Standardizzato in HTML 5, prima era un tag non standard, che è stato certamente implementato da tutti i principali browser. Il comportamento precedente a HTML 5 può variare ...
L'elemento embed fornisce un punto di integrazione per un'applicazione esterna (in genere non HTML) o contenuto interattivo. ( HTML 5 standard - "L' <embed>
elemento" )
Utilizzato per incorporare contenuto per i plug-in del browser. Eccezioni a ciò sono SVG e HTML che sono gestiti in modo diverso secondo lo standard.
I dettagli di ciò che può e non può essere fatto con il contenuto incorporato dipendono dal plug-in del browser in questione. Ma per SVG puoi accedere al documento SVG incorporato dal genitore con qualcosa del tipo:
svg = document.getElementById("parent_id").getSVGDocument();
Dall'interno di un documento SVG o HTML incorporato puoi raggiungere il genitore con:
parent = window.parent.document;
Per HTML incorporato non c'è modo di ottenere il documento incorporato dal genitore (che ho trovato).
<object>
L' <object>
elemento può rappresentare una risorsa esterna, che, a seconda del tipo di risorsa, verrà trattata come un'immagine, come un contesto di navigazione nidificato o come risorsa esterna da elaborare da un plugin. ( HTML 5 standard - "L' <object>
elemento" )
Conclusione
A meno che tu non stia incorporando SVG o qualcosa di statico, probabilmente sei il migliore da usare <iframe>
. Per includere l'uso di SVG <embed>
(se ricordo bene <object>
non ti lascerò script †). Onestamente non so perché dovresti utilizzarlo <object>
se non per browser o flash precedenti (con cui non lavoro).
† Come sottolineato nei commenti seguenti; gli script <object>
verranno eseguiti ma i contesti padre e figlio non possono comunicare direttamente. Con <embed>
te puoi ottenere il contesto del bambino dal genitore e viceversa. Ciò significa che puoi usare gli script nel genitore per manipolare il figlio, ecc. Quella parte non è possibile con <object>
o <iframe>
dove invece dovresti impostare qualche altro meccanismo, come l'API JavaScript postMessage JavaScript .