无法打印iFrame

问题描述 投票:5回答:2

[此问题的简化版本:]

为什么iFrame有时会拒绝打印?例如,在这两页上点击print preview

  1. http://fiddle.jshell.net/gJDv4/1/show/
  2. http://fiddle.jshell.net/gJDv4/2/show/

在打印预览中,iFrame在第一个示例中可见,但在第二个示例中隐藏。 firstsecond iFrame之间的ONLY代码差异是CSS属性(margin: 20px;)已在第二个示例中添加到iFrame中。


[原始版本:]

我正在构建一个预览/打印页面,该页面将汇编一堆独立的HTML文件,这些HTML文件引用它们自己的样式表和javascript文件。

[想法是所有文件都显示在iFrame中以供预览,然后在打印时,每个iFrame(可能会跨越多页)都会打印出来,就像它是自己的文档一样。

但是,当我打印(或打印预览)时,iFrame要么不显示任何内容,要么仅打印第一页,而将iFrame的其余页面截断。

在将iFrame制作成多页之前,它们就可以打印(并且可以打印预览):

此行为的原因是什么?

css iframe browser printing
2个回答
3
投票

您可以通过在各个iframe的窗口上调用print()函数来打印它们。...>

所以这样可以打印文件2:

$('#iframeTwo')[0].contentWindow.print()

这里是一个jsfiddle,我在其中添加了触发单个打印的按钮...

http://jsfiddle.net/sg3s/GJKkm/17/

关于为什么浏览器在打印其父文档时不会在iframe中打印内容。这些文档实际上不是显示在其中的文档的一部分,这可能需要做一些事情……可以将其视为一个单独的窗口(可以用JS中的window.open()生成一个窗口),然后巧妙地将其砍掉进入主文档,并且视口被限制在iframe上指定的任意位置,并带有一些魔力。


0
投票

我想出了一种解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.