Странная ошибка печати IE7

У меня есть страница, которая хорошо отрисовывается в 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

2-й - это то, как печатается страница, если я меняю позицию CSS содержимого div на относительную с абсолютной.

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

Третий - как печатается страница, если я закомментирую «Сломанная часть». То есть просто отлично.

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

10.11.2009 20:07:50
У вас есть URL или пример кода?
scunliffe 10.11.2009 20:12:19
К сожалению, это секретная страница. Я действительно просто надеюсь, что кто-то с подобным опытом может предложить предложение, потому что у меня совершенно нет идей.
iandisme 10.11.2009 20:15:14
Лучший способ найти проблему - создать минимальный контрольный пример: удалить как можно больше HTML, CSS и контента, чтобы получить наименьшее количество кода, который все еще показывает проблему. В процессе вы можете найти ошибку в своем коде или в IE7, которая несет ответственность за вас. Если нет, вы можете показать нам этот минимальный контрольный пример, поскольку к тому времени вы можете легко отредактировать оставшуюся личную информацию.
mercator 10.11.2009 20:40:53
Я сделаю это, как только вернется мой dev-сервер X- (
iandisme 11.11.2009 15:24:31
Работая над экранами, я обнаружил, что смогу распечатать все строки страницы, если изменил масштаб с «Уменьшить до размера» на «85%». Только в этом масштабе все появится, и в этом масштабе последние 5-10 символов справа будут разделены. Интересный факт. Скоро будут показы
iandisme 11.11.2009 16:12:14
3 ОТВЕТА
РЕШЕНИЕ

Боюсь, это не совсем ответ, но он становился слишком длинным для комментариев ...

Как позиционирование «все неправильно» при изменении positionатрибута? Вы говорите о позиционировании на печатной странице или в браузере? Если это в браузере, используйте отдельную таблицу стилей печати ...

Можете ли вы «исправить» страницу, удалив эти два абзаца, или же удаление других абзацев в том же самом div, и, возможно, на той же печатной странице, которые составляют примерно одинаковую длину, также исправит это?

Небольшой поиск в Google показывает, что у IE7 есть проблемы с позиционированием и печатью. Посмотрите на следующие ссылки. Они могут указать вам правильное направление:

Этот пост от ThaSaltyDawg из второй ссылки выглядит наиболее информативным, хотя и затрагивает другую (?) Ошибку печати IE7:

Методом проб и ошибок я нашел решение для моей проблемы. Это был CSS, как я и догадывался. Использование комбинаций float, position, z-index и нескольких других элементов привело к неожиданным результатам в IE. После перехода на страницу поддержки Microsoft я обнаружил, что в IE есть ошибка, связанная с этим.

В моем случае использование значения с плавающей точкой <table>в IE не одобряется. Отображается нормально, но не очень хорошо для печати. Также убедитесь, что ваша позиция правильна. И если вы вложили <table>и <div>убедитесь, что ваш z-индекс правильный.

Нет никакого реального способа установить эти вещи, это зависит от их использования, потому что некоторые из моих страниц должны были иметь разные настройки.

Поплавки и абсолютно позиционированные элементы, кажется, создают больше проблем. Таким образом, вам, вероятно, придется пойти на более раннее «решение» изменения positionатрибута в div (в таблице стилей печати), а затем пройтись по остальным, чтобы исправить сломанный макет.

2
21.01.2010 20:33:40

ОК ... Я создал новый лист CSS и указал его для media = "print". В этой таблице стилей я убрал все форматирование и навигацию и полностью распечатал содержимое. Это прекрасно работает в IE7 и Firefox. Спасибо всем, кто помог!

3
12.11.2009 19:04:21

Даже с таблицей стилей печати я обнаружил, что IE7 (а иногда и IE8) игнорирует определенные стили.

После небольшого тестирования, похоже, что имена классов, на которые я ссылался, были в тегах html5. Если у вас есть обертки для div, вы можете просто нацелиться на них, что, похоже, решило проблему для меня.

0
5.12.2012 01:09:30