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

奇怪的IE7打印错误

  •  4
  • iandisme  · 技术社区  · 16 年前

    我有一个在IE6/7和火狐3.5中呈现良好的页面。IE6和火狐3.5在打印页面时都没有问题,但IE7有问题。打印页面时,除显示的两个表外,我的content div的前半部分不可见。内容开始出现在句中,没有任何形式的标记或中断。

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

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

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

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

    <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

    第二个问题是,如果我将content div的css位置从absolute更改为relative,页面将如何打印。

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

    第三个问题是,如果我对“坏的部分”进行评论,页面将如何打印。也就是说,很好。

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

    3 回复  |  直到 13 年前
        1
  •  2
  •   mercator    15 年前

    恐怕不是一个很好的答案,但它变得有点太长了,无法发表评论…

    当你改变 position 属性?您是在讨论打印页上的定位,还是在浏览器中的定位?如果在浏览器中,请使用单独的打印样式表…

    您只能通过删除这两个段落来“修复”页面,还是删除同一个分区中的其他段落(可能是在同一个打印页上,这些段落加起来大约有相同的长度)也可以修复页面?

    稍微搜索一下就可以发现IE7在定位和打印方面存在问题。看看下面的链接。他们可能会给你指明正确的方向:

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

    通过反复试验,我找到了解决问题的方法。我猜是CSS。使用float、position、z-index和其他一些元素的组合会在ie中产生一些意想不到的结果。在转到Microsoft支持页后,我发现ie中有一个与此相关的bug。

    在我的例子中,使用浮点值 <table> 在IE中是不受欢迎的。它显示正常,但打印效果不太好。还要确保您的位置值是正确的。如果你在筑巢 <表& gt; S和 <div> 确保Z索引正确。

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

    浮动和绝对定位元素似乎给了我们最大的问题。所以你可能只需要按照你之前的“解决方案”来改变 位置 属性设置在一个DIV上(在打印样式表中),然后通过其他部分修复损坏的布局。

        2
  •  3
  •   iandisme    16 年前

    好啊。。。我创建了一个新的CSS工作表,并将其指定为media=“print”。在这个样式表中,我去掉了所有的格式和导航,并使内容完全打印出来。这在IE7和火狐中很好用。感谢所有帮助过的人!

        3
  •  0
  •   alexkb    13 年前

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

    经过一点测试,似乎是因为我提到的类名在HTML5标记中。如果你有包装沙发床,你可以把它们作为目标,这对我来说似乎解决了问题。

    推荐文章