Как печатать только части страницы?

Я пытаюсь скрыть некоторые div, прежде чем пользователь напечатает эту гигантскую форму, а затем снова отобразит div. Таким образом, я хочу игнорировать остальную часть страницы и печатать только ее форму.

Конечно, я могу открыть отдельную страницу, когда пользователь нажимает кнопку печати. Единственное, что форма очень длинная, и было бы довольно утомительно сделать это.


Изменить: мой предыдущий вопрос фактически не отражает то, что я искал. Поэтому я изменил его на текущий.

Также спасибо всем, что предложил window.onbeforeprint и window.onafterprint. Это имело отношение к моему отредактированному вопросу.

Ответы

Ответ 1

IE поддерживает onbeforeprint и onafterprint, но то, что вы действительно хотите, это таблица стилей печати. ​​

<link rel="stylesheet" type="text/css" media="print" href="print.css">

Смотрите также: этот ответ

Ответ 2

Сначала, Ok Ok:

Взгляните на window.onbeforeprint и window.onafterprint(исходный вопрос задал вопрос о том, как это сделать программно, я считаю).

Теперь лучший способ:

Лучший способ сделать это - это стиль, специально предназначенный для печати. Другими словами, ваш div может выглядеть так:

<div class="someClass noPrint">My Info</div>

У вас будет это в вашей таблице стилей:

.someClass {font-family:arial;}
@media print {
    .noPrint { display: none; }
} 

Другой вариант

Вы также можете поместить это в отдельную таблицу стилей, если хотите, поэтому вам не нужно смешивать стили:

<link rel="stylesheet" type="text/css" media="print" href="print.css">

В вашей таблице стилей экрана может быть определен параметр ".someClass", а затем ваша таблица стилей печати может определить ее совершенно другим способом.

Ответ 3

Возможно, вам захочется создать таблицу стилей, специально предназначенную для печати, используя media = "print"

Ответ 4

Вы действительно должны реализовать это как CSS media = print styles. Атрибут media элемента link может использоваться для выбора того, к какому медиа применяется стильная таблица. Проверьте эту статью