Я видел множество форумов, предлагающих тег Object в качестве замены IFrame, который, вероятно, работает в большинстве случаев.
Например, у меня был PDF-файл, отображаемый в IFrame (потому что на странице были и другие вещи, которые нам нужно было показать на странице, помимо только PDF-файла), и я смог добиться его правильного отображения с помощью Object.
Что было:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
Стало:
<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>
Но Object не был подходящей заменой для выполнения требования о возможности печати ТОЛЬКО PDF-части страницы.
IFrame похож на собственное окно на странице (в основном окно внутри окна), и как только вы получите объект окна, вы можете вызвать для него .print (), например:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame имеет свойство contentWindow, что делает возможной печать только этой части. Объект не имеет свойства contentWindow, поэтому нет возможности распечатать только часть страницы.
Итак, похоже, что если вы просто используете IFrame для отображения чего-либо, вместо него можно использовать другие теги, такие как Object. Но если вам нужно определенным образом взаимодействовать с содержимым IFrame, тогда IFrame может быть необходим.