代码之家  ›  专栏  ›  技术社区  ›  CMPalmer

为什么从IFrame打印页面时看到不同的字体大小?

  •  4
  • CMPalmer  · 技术社区  · 17 年前

    window.frames[iframeId].location.href = "../ProblemPage.htm";
    

    window.frames[iframeId].focus();
    window.frames[iframeId].print();
    

    请注意,页面设置设置几乎都是默认设置。我使用了不同的打印机,直接打印成PDF。我反复清除缓存,以确保我使用的是相同的CSS。然而,在同一IE7会话中,页面本身以一种方式打印,如上所述通过IFrame打印的页面以较小的字体打印。在单个Firefox会话中,页面本身打印的内容与通过IFrame打印的页面完全相同。

    有什么想法吗?当我在IE上打印时,我的一些样式可能会“泄漏”到页面中,或者IE在IFrame中解释了不同的样式。

    好吧,我想这不是“泄漏风格”。如果我把雅虎CSS重置放在ProblemPage.CSS文件中,在所有四种情况下,它肯定会被两个浏览器都接受,但问题仍然存在:当IE从IFrame打印页面时,字体大小会出错。

    更新2

    从未发现问题。更简单的测试项目没有显示同样的问题,我怀疑母版页、主题或类似的东西可能有问题。有趣的是,问题并没有出现在IE6上,只是出现在IE7上。

    4 回复  |  直到 17 年前
        1
  •  1
  •   Jason N. Gaylord    17 年前

        2
  •  1
  •   Matt    17 年前

        3
  •  1
  •   bobince    17 年前

    听起来很奇怪。没有在线测试很难诊断,但是:

    • 如果没有,让子框架在父框架上的脚本中调用一个函数或设置一个变量,然后(当通过超时或轮询将控件返回父页面时)在自己的窗口上调用print()怎么样?

        4
  •  0
  •   Aduir    15 年前

    你可以试试这个:

    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();
        }
    }
    
        5
  •  0
  •   Krzysiek Grzembski    14 年前