2013-03-28 62 views
8

客户的网站上有产品清单。该产品的价格通过页面底部的iFrame动态提取。页面上有Javascript,它会根据iFrame内容的大小自动将此iFrame调整到正确的高度,一旦它被加载。JavaScript:打印完整网页时,IE似乎无法在页面上打印iFrame的内容

客户端报告打印页面时,他们无法从iFrame中看到价格应该是什么的东西 - 显然它不是在IE中打印,而是在主页面上打印。

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

任何人都可以澄清在这种情况下的预期行为?默认情况下是否可以让IE浏览器打印页面包含的iFrames?如果是这样,我该如何去做这件事?我只能找到从父窗口打印特定框架的示例。

谢谢!

+0

这不回答你的问题,但可以让你在未来与IE测试 - http://habdas.org/emulating-ie-with -virtualbox/ –

+0

IE处理iframe打印的方式可能存在一些差异,您最好提供网站的URL或类似问题的HTML页面源代码(包括CSS)。 – fitheflow

+0

我发现其他人报告类似的问题为IE [这里](https://issues.liferay.com/browse/LPS-16399) – fitheflow

回答

0

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

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

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

此测试的iFrame内容不同于主页面的内容。但据我所知,这里有一个跨域策略文件。

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

0

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

1

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

下面是有点什么问题威力炒作,但不知道多/看代码是很难知道的细节:

这个问题可能是由于一些CSS,你可能在您的网页上。我读过类似的iframe打印问题,其中visibility设置为hidden,最初导致iframe打印不正确。为了解决这个特定情况,用户必须将widthheight设置为0px。在不了解您的网站的情况下,我无法正确预测这种情况正在发生。

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

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

打印

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

有用的链接Print Specification

0

我无法解释为什么IE浏览器不能正常工作,但也许你可以通过添加这部分代码到父页面解决问题,以迫使每个iframe要刷新:

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

要获得浏览器,我使用this方法。我不使用contentDocument.location.reload(true);方法来确保iframe被刷新。请参阅SO topic

+0

'$ .browser'已从jQuery 1.9中删除:http://api.jquery.com/jQuery.browser/ – Chase

+0

是的,您是对的。您必须使用旧的jQuery版本,因为新方法将检测浏览器是否支持给定功能,而不是获取浏览器名称。它是[jQuery.support](http://api.jquery.com/jQuery.support/)在我们的案例中,我们不知道问题出在哪里。 – JoDev