Как узнать, что пользователь печатает веб-страницу на принтере?
У нас тут задача в процессе производства продукта появилась — занести в лог, что пользователь сделал попытку печати чего-либо в браузере. Есть событие onbeforeprint, но оно есть только в Эксплорере и Файерфоксе.
Придумал такое решение — перед печатью браузер накладывает стиль CSS для печати, если он есть, этим можно воспользоваться:
@media print {
body {
background: url(http://example.org/user-tries-to-print.php);
}
}
Браузер попытается загрузить фоновое изображение (и загружает, я попробовал), выполнится серверный скрипт и положит в логи то, что нужно.
«отправляет на принтер»? «печатает на принтере»?
Комментарий для Алексей:
Да, букву не допечатал. Исправлено.
tries-to-print.php :)
здорово придумано
а при повторной печати (без перезагрузки страницы) отправляется запрос?
хотя количество попыток, наверное, не так важно
Комментарий для Евгения Степанищева:
Женя, ты хитрый лис :)
А я ломал голову, как навесить счётчики на печать.
Спасибо.
Комментарий для Линар:
Для нас это неважно :) Главное, что попытался, сколько раз — не интересно :)
Комментарий для makishvili.com:
Интересно, что ты такое делаешь :)
...файл /user-tries-to-print-and-fails.php подгружает черный бэкграунд.
Комментарий для Евгения Степанищева:
Рефакторинг страницы печати Я.Карт :)
Комментарий для spectator.ru:
Обычно это проще делают.
@media print {
* { display: none; }
}
Уточните, запрос выполнится при открытии диалога печати или после того, как пользователь нажал кнопку «Печать»?
Комментарий для Иван:
Где как. Зависит от браузера и есть ли у него предосмотр документа.
А как же настройка «Печатать фоновые изображения» или подобная?
Комментарий для Сергей:
А браузерам пофигу, они всё равно грузят.
красиво )