【发布时间】:2011-11-08 15:34:50
【问题描述】:
我正在使用来自this 答案的代码直接从打印按钮打印单独的页面。用户单击打印按钮,然后将 url 发送到打印功能。打印函数将单独的页面加载到 display:none iframe 中并打印该 iframe onLoad。它适用于 IE、Chrome 但不适用于 Firefox。在 Firefox 中,它将页面加载到 div 中,但从不打印或打开打印对话框。事实证明,如果将 iframe 设置为display:none,firefox 将不会打印 iframe,如下所示:
<div id="printerDiv" style="display:none"></div>
这是预期的行为吗?所有其他浏览器都可以打印,我正在考虑在 Bugzilla 上发布。我尝试了一些css“技巧”来使div不显示在用户可以看到的地方,但它总是以某种方式可见。我目前正在使用以下 CSS 使 iframe 不可见:
#printerDiv iframe{
width:1px !important;
height:1px !important;
border:0 !important;
margin:0 !important;
}
但它的边距仍然存在,并且在生成 iframe 后会留下 14px 的间隙。
如果没有display:none 属性,是否有某种方法可以使 iframe 根本不可见?更好的是,有没有办法做到这一点而无需像这样的黑客攻击?
我什至尝试使用 CSS 将 iframe 设置为display:block @print 媒体类型和display:none 用于屏幕,JS 函数仍然不会打印。
【问题讨论】:
-
可能是因为网址在不同的域中。
-
不是,其实我是在传递一个相对链接。我尝试了一个绝对链接,但它遇到了同样的问题。
-
将 iframe 绝对定位在页面之外..
-
@Greg Agnew 如果您愿意,可以将其作为答案发布,我会接受,这是我正在使用的解决方案。
标签: html css firefox cross-browser