He visto muchos foros que sugieren la etiqueta Object como reemplazo de IFrame, que probablemente funcione en la mayoría de los casos.
Por ejemplo, tenía un PDF que se muestra en un IFrame (porque había otras cosas que debemos mostrar en la página además del PDF) y pudimos mostrarlo bien usando Object.
¿Qué fue:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
Se convirtió en:
<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>
Pero a objeto no era un sustituto adecuado para llenar el requisito de ser capaz de imprimir solamente la parte de la página PDF.
un iframe es como su propia ventana dentro de la página (una ventana dentro de una ventana, básicamente), y una vez que el objeto de la ventana, puede llamar a .print() sobre ella, como:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame tiene una propiedad contentWindow, eso es lo que hace que imprimir solo esa parte sea posible. Object no tiene una propiedad contentWindow, por lo que no hay forma de imprimir solo la sección de la página.
Por lo tanto, parece que si solo está usando IFrame para mostrar algo, existen otras etiquetas como Object que se pueden usar en su lugar. Pero si necesita interactuar con los contenidos del IFrame de ciertas maneras, entonces IFrame puede ser necesario.
Impresionante, solo espero que los navegadores comiencen a admitir las cargas de archivos AJAX para que no tengamos que usar iframes o flash para eso. – Xeoncross
@Xeoncross Firefox y Chrome hacen: https://developer.mozilla.org/en/Using_files_from_web_applications – chesles