我有一个简单的基于表格的HTML页面,其中包含非常简单的样式表。我可以在IE7和FireFox 3中打开页面,它看起来完全一样。我可以从两个浏览器打印页面,它看起来完全一样。我们将调用页面“ProblemPage.htm”
现在,在ASP.Net页面中,我创建了一个IFrame并将该HTML加载到IFrame中,如下所示:
window.frames[iframeId].location.href = "../ProblemPage.htm";
当用户单击ASP.Net页面上的按钮时,它会调用执行此操作的函数:
window.frames[iframeId].focus();
window.frames[iframeId].print();
当我这样做并打印出来时,Firefox版本与我单独加载页面并打印时的版本完全相同。 IE7版本将所有字体大小减少到大约一半。
请注意,页面设置设置几乎都是默认设置。我使用了不同的打印机并直接打印到PDF。我已经反复清除了我的缓存,以确保我使用相同的CSS。然而在同一个IE7会话中,页面本身打印一种方式,通过IFrame打印的页面如上所示打印较小的字体。在单个Firefox会话中,页面本身打印的内容与通过IFrame打印的页面完全相同。
有什么想法吗?当我在IE上打印它或者IE正在解释IFrame中不同的样式时,我的某些样式可能会“泄漏”到页面中。
更新
嗯,我想这不是“泄漏风格”。如果我将Yahoo CSS重置放在ProblemPage.css文件中,那么在所有四种情况下它都会被两个浏览器选中,但问题仍然存在:当IE从IFrame打印页面时,字体大小被搞砸了。
更新2
从未发现问题。更简单的测试项目没有显示相同的问题,我怀疑母版页,主题或类似的东西可能存在问题。有趣的是,问题并没出现在IE6上,只是IE7。
我只是通过有条件评论的IE浏览器来解决这个问题。这是我必须使用条件CSS的整个应用程序的唯一部分。
仍然希望得到一个答案(或者甚至是几个关于接下来要寻找什么的WAG)。
答案 0 :(得分:1)
确保您尝试打印的页面引用了正确的样式表。如果不是某些浏览器可能会拉入父级,而其他浏览器可能不会。
答案 1 :(得分:1)
当你描述“较小的字体大小”时,它让我想起了我在CSS中有一个堆叠的“font-size:0.8em”特定的场景。通过堆叠我的意思是显示特别小的文本是在其上具有EM字体大小的父元素内部,并且它本身具有一个。
我不希望iframe发生这种情况,但我想我会把它扔出去以防万一。
答案 2 :(得分:1)
听起来很奇怪。没有在线测试很难诊断,但是:
如果你在父页面的JavaScript中使用window.print()会发生同样的事情吗?
如果没有,如何让子帧调用函数或在父帧的脚本中设置变量,然后(当通过超时或轮询返回控件到父页时)调用print()在它自己的窗口?
答案 3 :(得分:0)
下午好! 如果您仍有问题,请尝试这篇文章.. 它对我有用。
http://bytes.com/topic/misc/answers/629926-ie7-printing-iframe-solution
答案 4 :(得分:0)
你可以试试这个:
function pr(frameId){
var printed;
var iframe = document.getElementById(frameId);
var ifWindow = iframe.contentWindow || iframe;
ifWindow.focus();
try {
var printed =ifWindow.execCommand('print', false, null);
} catch (e) {
}
if (! printed) {
ifWindow.print();
}
}