4

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

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

有没有人经历过类似的事情?你是怎么解决的(如果你没有因为沮丧而放弃的话)?

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

这里是可以注释掉的内容...

<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

第三个是如果我注释掉“Broken Part”,页面的打印方式。也就是说,刚刚好。

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

4

3 回答 3

3

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

于 2009-11-12T19:04:21.320 回答
2

恐怕不是一个答案,但评论有点太长了......

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

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

用谷歌搜索一下确实可以发现 IE7 在定位和打印方面存在问题。看看下面的链接。他们可能会为您指明正确的方向:

来自第二个链接的“ThaSaltyDawg”的这篇文章看起来信息最丰富,尽管它解决了一个不同的(?)IE7打印错误:

通过反复试验,我找到了解决问题的方法。正如我所猜测的那样,它是 CSS。使用浮动、位置、z-index 和其他一些元素的组合在 IE 中导致了一些意想不到的结果。转到 Microsoft 支持页面后,我发现 IE 存在与此相关的错误。

<table>在我的情况下,在 IE 中不赞成使用浮点值。它显示正常,但打印效果不佳。还要确保你的位置值是正确的。如果您要嵌套<table>'s 和<div>',请确保您的 z-index 是正确的。

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

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

于 2009-11-11T23:08:56.313 回答
0

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

经过一番测试,似乎是因为我引用的类名在html5标签中。如果你有包装 div,你可以只定位它们,这似乎解决了我的问题。

于 2012-12-05T01:09:30.037 回答