J'ai vu de nombreux forums suggérant la balise Object en remplacement d'IFrame, ce qui fonctionne probablement dans la plupart des cas.
Par exemple, j'avais un PDF affiché dans un IFrame (car il y avait d'autres choses que nous devons afficher sur la page en plus du PDF uniquement) et j'ai pu le faire s'afficher correctement en utilisant Object.
Qu'est-ce que c'était:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
Est devenu:
<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>
Mais Object n'était pas un remplaçant approprié pour remplir l'exigence de pouvoir imprimer UNIQUEMENT la partie PDF de la page.
Un IFrame est comme sa propre fenêtre dans la page (une fenêtre dans une fenêtre, en gros), et une fois que vous obtenez l'objet window, vous pouvez appeler .print () dessus, comme:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame a une propriété contentWindow, c'est ce qui permet d'imprimer uniquement cette partie. L'objet n'a pas de propriété contentWindow, il n'y a donc aucun moyen d'imprimer uniquement la section de la page.
Donc, il semble que si vous utilisez simplement IFrame pour afficher quelque chose, il existe d'autres balises comme Object qui peuvent être utilisées à la place. Mais si vous avez besoin d'interagir avec le contenu de l'IFrame de certaines manières, alors IFrame peut être nécessaire.