Widziałem wiele forów, które sugerowały tag Object jako zamiennik dla IFrame, który prawdopodobnie działa w większości przypadków.
Na przykład, miałem plik PDF wyświetlany w ramce iFrame (ponieważ na stronie były inne rzeczy, które musieliśmy pokazać poza tylko plikiem PDF) i udało mi się sprawić, że będzie dobrze wyświetlany za pomocą Object.
Co było:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
Stał się:
<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>
Jednak Object nie był odpowiednim zamiennikiem, aby spełnić wymóg drukowania TYLKO części strony w formacie PDF.
Ramka iFrame jest jak własne okno na stronie (w zasadzie jest to okno w oknie), a gdy już otrzymasz obiekt window, możesz wywołać na nim .print (), na przykład:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame ma właściwość contentWindow, dzięki czemu możliwe jest drukowanie tylko tej części. Obiekt nie ma właściwości contentWindow, więc nie ma możliwości wydrukowania tylko sekcji strony.
Wygląda więc na to, że jeśli używasz tylko iFrame do wyświetlenia czegoś, zamiast tego można użyć innych tagów, takich jak Object. Ale jeśli musisz w określony sposób wchodzić w interakcję z zawartością ramki iFrame, może być konieczne użycie ramki iFrame.