8

客户的网站上有产品列表。产品价格通过页面底部的 iFrame 动态拉入。页面上有 Javascript,一旦加载,它会根据 iFrame 内容的大小自动将此 iFrame 调整为正确的高度。

客户报告说,在打印页面时,他们从 iFrame 中看不到任何价格应该是的东西 - 显然它不是在 IE 中打印,只是主页本身。

我在 Mac 上,所以无法在 IE 中测试,所以我很难尝试这个。

任何人都可以澄清这种情况下的预期行为吗?是否可以让 IE 默认同时打印页面包含的 iFrame,如果可以,我将如何执行此操作?我只能找到从父窗口打印特定框架的示例。

谢谢!

4

5 回答 5

1

预期的行为应该是您在其他浏览器中遇到的。如果页面被打印,则 iframe 应该与它一起打印。很难想象其他人都弄错了,而 IE 在这种情况下正确。

以下是关于问题可能是什么的一些猜测,但如果不了解更多/查看代码,很难知道具体细节:

此问题可能是由于您的页面上可能有一些 css。我读过类似的iframe打印问题,最初visibility设置为hidden导致iframe打印不正确。为了解决这种特定情况,用户必须将widthand设置height0px. 在不了解您网站的更多信息的情况下,我无法正确预测这种情况正在发生。

另一个问题可能是您根据 iframe 的内容动态调整大小。一个简单的测试是将该部分注释掉并设置一个通用的width并查看打印问题是否仍然存在。也许这些动态样式没有被转移到打印样式表中并且没有被应用(因此根本没有出现)。 heightiframe

作为一个快速建议,请查看css media types

打印

用于分页材料和在打印预览模式下在屏幕上查看的文档。有关分页媒体特有的格式问题的信息,请参阅分页媒体部分。

有用的链接打印规范

于 2013-04-09T13:50:28.253 回答
0

试试这个插件它会解决你的问题 http://projects.erikzaadi.com/jQueryPlugins/jQuery.printElement/

于 2013-11-07T20:03:17.143 回答
0

这是一个有趣的点,所以我使用 IE8 进行了测试(在服务器上,而不是本地)。

我在 IE8 中打印了一个网页,其中包含我构建的 iframe。它第一次打印了一些内容(其他内容显示为黑色)。我第二次打印时,iframe 内容都是黑色的。

但是,在我的示例中,iframe 中的内容不断变化(淡入淡出的图像和文本),其背后的 css 背景是黑色的。

该测试的 iFrame 内容与主页面的内容位于不同的主机服务器上。但据我所知,这里有一个跨域策略文件。

跨域策略问题是我的第一个猜测,但完全有可能 Internet Explorer 在将屏幕截图发送到打印机时呈现屏幕截图的方式存在一些问题。

于 2013-04-02T23:40:48.917 回答
0

我无法解释为什么 IE 不起作用,但也许您可以通过将这部分代码添加到父页面来解决问题,以强制刷新每个 iframe:

$(document).ready(function() {
    if($.browser.msie) {//Only for IE
        $('iframe').each(function() {
          $(this).attr('src', $(this).attr('src'));
        });
     }
});

为了获得浏览器,我使用这种方法。
而且我不使用contentDocument.location.reload(true);方法来确保刷新 iframe。请参阅SO 主题

于 2013-04-09T15:39:23.507 回答
0

如果您使用的是 Javascript,那么为什么不尝试window.print()使用print media CSS.

于 2013-04-09T12:31:02.767 回答