<iframe>
El elemento iframe representa un contexto de navegación anidado. HTML 5 estándar - "El <iframe>elemento"
Se usa principalmente para incluir recursos de otros dominios o subdominios, pero también se puede usar para incluir contenido del mismo dominio. La <iframe>fortaleza de esto es que el código incrustado está "en vivo" y puede comunicarse con el documento padre.
<embed>
Estandarizado en HTML 5, antes era una etiqueta no estándar, que ciertamente fue implementada por todos los principales navegadores. El comportamiento anterior a HTML 5 puede variar ...
El elemento incrustado proporciona un punto de integración para una aplicación externa (normalmente no HTML) o contenido interactivo. ( HTML 5 estándar - "El <embed>elemento" )
Se utiliza para incrustar contenido para complementos del navegador. Las excepciones a esto son SVG y HTML que se manejan de manera diferente de acuerdo con el estándar.
Los detalles de lo que se puede y no se puede hacer con el contenido incrustado depende del complemento del navegador en cuestión. Pero para SVG puede acceder al documento SVG incrustado desde el padre con algo como:
svg = document.getElementById("parent_id").getSVGDocument();
Desde el interior de un documento SVG o HTML incorporado, puede comunicarse con el padre con:
parent = window.parent.document;
Para HTML incrustado no hay forma de obtener el documento incrustado del padre (que he encontrado).
<object>
El <object>elemento puede representar un recurso externo que, según el tipo de recurso, se tratará como una imagen, como un contexto de navegación anidado o como un recurso externo para ser procesado por un complemento. ( HTML 5 estándar - "El <object>elemento" )
Conclusión
A menos que esté incrustando SVG o algo estático, probablemente sea mejor usarlo <iframe>. Para incluir el uso de SVG <embed>(si no recuerdo mal <object>, no te dejaré script †). Honestamente, no sé por qué usarías<object> menos que para navegadores antiguos o flash (con los que no trabajo).
† Como se señala en los comentarios a continuación; los scripts <object>se ejecutarán pero los contextos padre e hijo no pueden comunicarse directamente. Con <embed>usted puede obtener el contexto del niño del padre y viceversa. Esto significa que puede usar scripts en el padre para manipular al niño, etc. Esa parte no es posible con <object>o <iframe>donde tendría que configurar algún otro mecanismo, como la API de JavaScript postMessage .