[此问题的简化版本:]
为什么iFrame有时会拒绝打印?例如,在这两页上点击print preview
:
在打印预览中,iFrame在第一个示例中可见,但在第二个示例中隐藏。 first和second iFrame之间的ONLY代码差异是CSS属性(margin: 20px;
)已在第二个示例中添加到iFrame中。
[原始版本:]
我正在构建一个预览/打印页面,该页面将汇编一堆独立的HTML文件,这些HTML文件引用它们自己的样式表和javascript文件。
[想法是所有文件都显示在iFrame中以供预览,然后在打印时,每个iFrame(可能会跨越多页)都会打印出来,就像它是自己的文档一样。
但是,当我打印(或打印预览)时,iFrame要么不显示任何内容,要么仅打印第一页,而将iFrame的其余页面截断。
在将iFrame制作成多页之前,它们就可以打印(并且可以打印预览):
此行为的原因是什么?
您可以通过在各个iframe的窗口上调用print()
函数来打印它们。...>
所以这样可以打印文件2:
$('#iframeTwo')[0].contentWindow.print()
这里是一个jsfiddle,我在其中添加了触发单个打印的按钮...
http://jsfiddle.net/sg3s/GJKkm/17/
关于为什么浏览器在打印其父文档时不会在iframe中打印内容。这些文档实际上不是显示在其中的文档的一部分,这可能需要做一些事情……可以将其视为一个单独的窗口(可以用JS中的window.open()
生成一个窗口),然后巧妙地将其砍掉进入主文档,并且视口被限制在iframe上指定的任意位置,并带有一些魔力。
我想出了一种解决方法。