Ho visto molti forum che suggeriscono il tag Object in sostituzione di IFrame, che probabilmente funziona nella maggior parte dei casi.
Ad esempio, avevo un PDF mostrato in un IFrame (perché c'erano altre cose che dovevamo mostrare sulla pagina oltre al solo PDF) e sono riuscito a farlo visualizzare bene usando Object.
Cosa era:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
Divenne:
<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>
Ma Object non era un sostituto adatto per soddisfare il requisito di poter stampare SOLO la porzione PDF della pagina.
Un IFrame è come la propria finestra all'interno della pagina (una finestra all'interno di una finestra, fondamentalmente), e una volta ottenuto l'oggetto finestra, puoi chiamare .print () su di esso, come:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame ha una proprietà contentWindow, che è ciò che rende possibile la stampa solo di quella parte. Object non dispone di una proprietà contentWindow, quindi non è possibile stampare solo la sezione della pagina.
Quindi, sembra che se stai usando IFrame per visualizzare qualcosa, ci sono altri tag come Object che possono essere usati invece. Ma se è necessario interagire con il contenuto dell'IFrame in determinati modi, potrebbe essere necessario IFrame.