Подтвердить что ты не робот

Есть ли способ отслеживать, если пользователь печатает веб-страницу?

Есть ли способ отслеживать, печатает ли пользователь веб-страницу?

Спасибо, Graham

4b9b3361

Ответ 1

@Tahir Akhtar имел идею использования таблицы стилей печати. Согласно комментариям, это не работает, потому что таблица стилей всегда извлекается, независимо от того, находится ли браузер в настоящее время в режиме просмотра или нет.

Как насчет этого: используйте таблицу стилей печати и определите стиль в ней, который заставляет браузер извлекать определенный ресурс при его рендеринге. Ресурс вернет прозрачный образ.

Что касается выбора свойства CSS, background-image отсутствует, потому что они обычно не отображаются браузером. Моя мысль была бы list-style-image или cursor.

Я думаю, что list-style-image на абсолютно позиционированном, прозрачном <ul> может сделать трюк без визуального изменения чего-либо (я бы не осмелился позиционировать элемент вне страницы из-за возможности оптимизации браузера). Каждый доступ к этому ресурсу должен поступать от печати страницы или предварительного просмотра.

Я не могу проверить это прямо сейчас, может быть, позже. Если кто-нибудь его попробует, мне будет интересно узнать, работает ли он.

Ответ 2

В Internet Explorer 5+ вы можете использовать событие onafterprint, чтобы запускать запрос AJAX каждый раз, когда страница печатается. Если вы используете jQuery, вы можете сделать следующее:

window.onafterprint = function()
{
    $.post("increment_print_counter.php");
};

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

Ответ 3

Я не знаю, когда браузеры получат CSS, когда вы укажете их со значением media = "print"

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

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

Попробуй.

Ответ 4

Вы можете добиться этого только в IE.

IE поддерживает два клиентских события, которые вы можете обрабатывать: onbeforeprint и onafterprint.

Вы можете добавить запрос AJAX в любое событие, которое вызовет серверную страницу, чтобы, скажем, увеличить счетчик PagePrinted в базе данных.

Ответ 5

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

Ответ 6

Вы также можете добавить на страницу большую, очевидную кнопку "Печать", которая запускает window.print и выполняет запрос AJAX, если onafterprint не доступен.

Он не дал бы вам никакой статистики о пользователях, которые просто нажимают Ctrl + P (и arent на IE), конечно, но это дает вам что-то (если вы не против наклеить кнопку "Печать" на странице).

Ответ 7

  • Отключить печать с помощью CSS (без отображения на теге тела)
  • У вас есть кнопка печати на странице, открывающей новую страницу для печати. Затем вы можете связать этот URL с пользователем (при условии, что у вас есть информация о них).