Атрибут onafterprint тега <body>
Описание
Атрибут onafterprint позволяет задать JavaScript-код, который будет выполнен после того, как пользователь напечатает документ или запустит предварительный просмотр печати. Это часть системы событий печати в браузере.
<body onafterprint="console.log('Печать завершена')">
<h1>Мой документ</h1>
<p>Содержимое страницы...</p>
</body>
События печати:
| Событие | Когда срабатывает |
|---|---|
onbeforeprint |
Перед открытием диалога печати |
onafterprint |
После закрытия диалога печати или завершения печати |
Рекомендации по использованию:
- Используйте для восстановления состояния страницы после печати
- Можно применять для аналитики печати документов
- Полезен для скрытия/показа элементов после печати
- Сочетайте с
onbeforeprintдля полного контроля
Практический пример:
<body onafterprint="document.getElementById('print-message').style.display='none'">
<div id="print-message" style="position: fixed; top: 0; background: yellow; padding: 10px;">
Идет печать документа...
</div>
<h1>Важный документ</h1>
<p>Основное содержимое...</p>
<script>
window.onbeforeprint = function() {
document.getElementById('print-message').style.display = 'block';
};
</script>
</body>
Важные замечания:
- Время срабатывания может отличаться в разных браузерах
- Некоторые браузеры могут не поддерживать это событие
- Не гарантируется точное время выполнения (особенно для сетевых принтеров)
- Для сложной логики лучше использовать window.matchMedia('print')
Совместимость с браузерами:
<script>
// Альтернативный подход для лучшей совместимости
window.matchMedia('print').addListener(function(mql) {
if (!mql.matches) {
console.log('Печать завершена');
// Действия после печати
}
});
</script>
Примечание: Хотя onafterprint полезен для базовых сценариев, для сложных задач печати рекомендуется использовать CSS @media print и JavaScript-полифиллы для полной кросс-браузерной поддержки.