奇怪的IE7打印Bug

时间:2009-11-10 20:07:51

标签: internet-explorer-7 printing-web-page

我有一个在IE6 / 7和Firefox 3.5中呈现的页面。 IE6和Firefox 3.5都没有打印页面的问题,但IE7确实如此。打印页面时,我的内容div的前半部分不可见,但显示的两个表除外。内容开始重新出现在句子中间,没有任何标记或中断。

这几乎就像是隐藏了div的前半部分,但让表格显示出来。但是,我没有任何不合适的标签,没有神奇的空浮动div或任何类型的验证错误,而且我还有其他几个使用相同CSS的页面,所有这些都打印得很好。

有没有人经历过类似的事情?你是如何解决的(如果你没有放弃挫折)?

编辑: 我终于有了更多时间来研究这个问题,而且我已经很好地缩小了问题范围。我可以通过执行以下两项操作之一来显示所有文本:将div的“position”样式属性更改为“绝对”之外的其他内容(这会导致定位完全错误),或者通过注释少量内容。

以下是可以注释掉的内容......

<p><strong>Personal Expenses: </strong>EJTH will bill your credit card for any additional expenses (extension <!--XXXX-->airfare, etc.), if applicable. <strong><!-- begin broken part --><em>All charges must be paid in full before your electronic ticket confirmation will be emailed. No payments will be accepted on-site. Note:</em></strong> When using a credit card for personal purchases (i.e., optional activities, trip extensions, conference registration fees, etc.), &ldquo;MT&rdquo; will appear as the vendor on your credit card statement.</p> <p>You will also be responsible for any personal charges you incur. These include phone calls, valet and laundry service or personal bar bills. The resort cashier will keep a separate record of these expenditures for you. Be sure to settle your personal account at the resort front desk prior to departure. <strong><em>Important: If you neglect to pay your personal (incidental) account when you check out, EJTH will bill you after the program for the actual cost, plus a 15% service charge.</em></strong><!-- end broken part --></p>

希望能帮到你,而不是帮助我。我打算尝试使用CSS来解决问题,假设我今天没有被其他东西拉进去。

编辑:屏幕!

第一个是当前页面的打印方式。我把XXXX放在内容重新出现的页面上;我也把它放在上面的代码中。如果你稍稍眯一眼就可以看到它。

http://img109.imageshack.us/img109/589/current.jpg

第二个是当我将内容div的CSS位置从绝对值更改为相对时页面的打印方式。

http://img514.imageshack.us/img514/9961/modcss.jpg

第三个是如果我注释掉“破碎的部分”页面的打印方式。就是这样,很好。

http://img514.imageshack.us/img514/653/commented.jpg

3 个答案:

答案 0 :(得分:3)

好的......我创建了一个新的CSS表并为media =“print”指定了它。在这个样式表中,我删除了所有格式和导航,并导致内容完全打印出来。这在IE7和Firefox中运行良好。感谢所有帮助过的人!

答案 1 :(得分:2)

不是一个答案,我很害怕,但评论过于冗长......

更改position属性时,定位“全部错误”是什么?您是在谈论打印页面或浏览器中的定位?如果它在浏览器中,请使用单独的打印样式表...

您是否可以通过删除这两个段落来“修复”该页面,或者删除同一个div中的其他段落,并且可能在相同的打印页面上,加起来大约相同的长度也会修复它?

一个小小的谷歌搜索确实表明IE7在定位和打印方面存在问题。看看以下链接。他们可能会指出你正确的方向:

This post by "ThaSaltyDawg" from the second link看起来信息最丰富,但它解决了一个不同的(?)IE7打印错误:

  

通过反复试验我找到了解决问题的方法。正如我猜测的那样是CSS。使用float,position,z-index和一些其他元素的组合在IE中引起了一些意想不到的结果。进入Microsoft支持页面后,我发现IE有关于此的错误。

     

在我的情况下,使用带有<table>的浮点值在IE中是不受欢迎的。它显示正常,但打印效果不佳。还要确保您的位置值正确。如果您正在嵌套<table><div>,请确保您的z-index正确无误。

     

没有真正的设置方法来设置这些东西,这取决于使用情况,因为我的几个页面必须有不同的调整。

浮动和绝对定位的元素似乎给出了最多的问题。因此,您可能只需要使用之前更改div上的position属性(在打印样式表中)的“解决方案”,然后通过其余部分来修复损坏的布局。

答案 2 :(得分:0)

即使使用打印样式表,我发现IE7(有时是IE8)忽略了某些样式。

经过一些测试后,似乎是因为我提到的类名是html5标签。如果你有包装div,你可以只针对它们,这似乎解决了我的问题。