Печать всплывающего окна в div по ID: решение ошибки кнопки
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для печати конкретного раздела вашего сайта с помощью JavaScript рекомендуется использовать следующий код:
function printSection(sectionId) {
var sectionContent = document.getElementById(sectionId).innerHTML;
var popupWin = window.open('', '_blank', 'width=600,height=600');
popupWin.document.open();
popupWin.document.write('<html><body onload="window.print()">' + sectionContent + '</html>');
popupWin.document.close();
}
Чтобы активировать функцию печати, вызовите printSection('idOfSectionToPrint')
, где ID элемента обозначает идентификатор секции, которую вы хотите распечатать. В итоге будет открыто новое окно, после чего автоматически появится диалоговое окно печати.
Расширенный режим: печать со всеми нюансами
Рассмотрим некоторые дополнительные опции, позволяющие обогатить основной функционал полезными возможностями.
Оформление печатной версии с помощью CSS-медиа-запросов
Для того чтобы печатная версия соответствовала стилю оформления вашего сайта и выглядела аккуратно, используйте для определения направления печати @media print
:
@media print {
body * {
visibility: hidden;
}
#idOfSectionToPrint, #idOfSectionToPrint * {
visibility: visible;
}
#idOfSectionToPrint {
position: absolute;
left: 0;
top: 0;
}
}
Упрощаем процесс печати с помощью jQuery
Если ваш проект базируется на jQuery, благодаря этой библиотеке код функции печати может быть значительно упрощен:
$('#printButton').click(function() {
var content = $('#idOfSectionToPrint').html();
var win = window.open('', 'printwindow');
win.document.write('<html><head><title>Print</title></head><body>' + content + '</body></html>');
win.document.close();
win.print();
});
Динамический контент и совместимость с браузерами
Убедитесь, что функция печати совместима со всеми популярными браузерами и корректно работает с динамическим контентом.
Визуализация
Представьте ситуацию: на вашем сайте размещена галерея четырех картин:
[Картина 1, Картина 2, Картина 3, Картина 4]
Ваша задача — распечатать лишь Картину 2:
🖨️: [ , Картина 2, , ]
Во внешнем виде итоговая брошюра будет эстетична и будет акцентировать внимание только на выбранной картине:
✨ [ , 🎨 Картина 2 🎨, , ] ✨
Таким образом, пользователи вашего сайта смогут распечатать именно то, что им нужно.
Основы печати
Полноправный доступ к кнопке печати
Кнопка печати должна быть легко доступна для пользователей. Например:
<button onclick="printSection('idOfSectionToPrint')">Печать раздела</button>
Работа с составными структурами
Если структура вашего сайта достаточно сложна, предоставьте возможность выбора конкретной части контента для печати.
Работа с iframe
Даже при условии, что контент подключен через iframe, его можно распечатать следующим образом:
function printIframeSection(iframeId, sectionId) {
var iframe = document.getElementById(iframeId);
var content = iframe.contentWindow.document.getElementById(sectionId).innerHTML;
var popupWin = window.open('', '_blank', 'width=600,height=600');
popupWin.document.write('<html><body onload="window.print()">' + content + '</body></html>');
popupWin.document.close();
}
Полезные материалы
- Метод Window: print() – Web API | MDN — Информация о вызове окна печати с помощью JavaScript.
- JavaScript – Печать содержимого DIV – Stack Overflow — Ответы сообщества на вопросы о способах печати конкретных разделов веб-страниц.
- Изменение содержимого документа — Подробное руководство по изменению документа с учетом его последующей печати.
- CSS-дизайн: Подготовка к печати – A List Apart — Продвинутые техники CSS для создания печатной версии веб-страницы.
- web.dev — Универсальный ресурс, на котором собраны материалы на все темы веб-разработки, включая функции печати.