Tôi đã thấy nhiều diễn đàn đề xuất thẻ Object thay thế cho IFrame, thẻ này có thể hoạt động trong hầu hết các trường hợp.
Ví dụ: tôi có một tệp PDF hiển thị trong IFrame (vì có những thứ khác chúng tôi cần hiển thị trên trang ngoài PDF) và có thể làm cho nó hiển thị tốt bằng cách sử dụng Đối tượng.
Những gì đã:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
Đã trở thành:
<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>
Nhưng Object không phải là một sự thay thế phù hợp để đáp ứng yêu cầu CHỈ có thể in phần PDF của trang.
IFrame giống như cửa sổ của chính nó trong trang (về cơ bản là một cửa sổ trong một cửa sổ) và khi bạn nhận được đối tượng window, bạn có thể gọi .print () trên đó, như:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame có thuộc tính contentWindow, đó là điều khiến chỉ in được phần đó. Đối tượng không có thuộc tính contentWindow, vì vậy không có cách nào để chỉ in phần của trang.
Vì vậy, có vẻ như nếu bạn chỉ sử dụng IFrame để hiển thị một thứ gì đó, thì có những thẻ khác như Đối tượng có thể được sử dụng thay thế. Nhưng nếu bạn cần tương tác với nội dung của IFrame theo những cách nhất định, thì IFrame có thể cần thiết.