当用户选择文件时仅打印iframe的内容->打印

Printing only the contents of an iframe when a user selects file->print

本文关键字:打印 gt iframe 选择 用户 文件      更新时间:2023-09-26

问题:

我有一个应用程序,它将来自其他服务器的内容加载到<iframe>中。用户希望能够打印iframe中的内容,这有时可能很长,并导致iframe滚动。打印时,只打印iframe视口中显示的区域。其余部分被切断。

我尝试过的:

使用@media print样式,我可以隐藏页面上的所有其他元素,并将iframe扩展到100%的宽度和高度。我不能做的AFAICT是将其调整为实际内容的w/h(单独使用CSS(,所以如果100%还不够,内容就会被截断。

我知道这是可以通过javascript解决的,但浏览器并不总是为file->print提供事件挂钩,所以我不能在需要的时候运行javascript。

我可以制作一个自定义的"打印"按钮,这样JS就可以运行,iframe也可以正确打印,但它不允许"打印预览",因为浏览器没有提供JS方法。

我被难住了,有答案吗?

如果您想打印iframe的内容,可以使用

document.getElementById('ifr1').contentWindow.print()

这将对iframe的内容(而不是容器窗口(调用print()