Вы не можете, кроме браузеров IE.Ни у одного другого браузера нет события перед печатью.Однако вы можете настроить таргетинг на конкретную таблицу стилей, чтобы применять ее только во время печати:
<!-- In head -->
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Эта таблица стилей будет применена перед печатью.Это позволяет вам вносить некоторые удивительные изменения, в том числе скрывать основные разделы, перемещать элементы и выполнять стилизацию только для печати, например разрывы страниц.
Другой вариант - предоставить пользователю «Распечатать эту страницу».кнопка.Эта кнопка может обрабатывать ваш JavaScript, вызывать window.print()
и отменять изменения:
function printMe() {
// perform changes
window.print();
// revert changes
}
Метод window.print()
всегда блокирует (в каждом браузере, который я тестировал), поэтому можно сразу же вернутьменяется после.Однако, если пользователь решит печатать через меню или панель инструментов, вам не повезет.
Один из способов, которым я справился с этим делом в сложном веб-приложении, заключался в том, чтобы иметь таблицу стилей для печати, которая скрывала все, кроме специальногоDIV.Если пользователь нажмет на печать, он получит предупреждающее сообщение.Если они нажмут кнопку печати, то этот div будет заполнен правильной информацией.Это не здорово, но, по крайней мере, они не получили несколько страниц мусора.