javascript - saber - ¿Hay alguna forma de rastrear si un usuario imprime una página web?
no has permitido buscar tu localizacion (8)
¿Hay alguna forma de rastrear si un usuario imprime una página web?
Gracias graham
- Desactivar impresión con CSS (no se muestra en la etiqueta del cuerpo)
- Tener un botón de impresión en la página que abre una nueva página de solo impresión. Luego puede vincular esa URL con el usuario (siempre que tenga alguna información sobre ellos)
@Tahir Akhtar tuvo la idea de utilizar una hoja de estilo de impresión. Según los comentarios, eso no funciona porque la hoja de estilo siempre se recupera, independientemente de si el navegador está actualmente en la vista de impresión o no.
¿Qué hay de llevar esto más allá? Use una hoja de estilo de impresión y defina un estilo en ella que haga que el navegador obtenga un determinado recurso cuando se procesa . El recurso devolvería una imagen transparente.
En cuanto a la elección de la propiedad CSS, background-image
está fuera, porque generalmente el navegador no las representa. Mi pensamiento sería una list-style-image
o un cursor
.
Creo que list-style-image
en un <ul>
transparente y absolutamente posicionado podría hacer el truco sin alterar visualmente nada (no me atrevería a colocar el elemento fuera de la página debido a posibles optimizaciones del navegador que lo eliminan). Todos los accesos a ese recurso deben provenir de la impresión de una página o una vista previa de impresión.
No puedo probarlo ahora, tal vez más tarde. Si alguien lo intenta, me interesaría saber si funciona.
En Internet Explorer 5+, puede usar el evento onafterprint
para iniciar una solicitud AJAX cada vez que se imprime la página. Si está utilizando jQuery , podría hacer lo siguiente:
window.onafterprint = function()
{
$.post("increment_print_counter.php");
};
¡Entonces quizás pueda usar algunas estadísticas para estimar la cantidad de veces que se imprimió desde otros navegadores!
No sé cuándo los navegadores buscarán el CSS cuando los especifique con media = "imprimir"
<link rel="stylesheet" type"text/css"
href="print.css" media="print">
Si lo obtienen solo cuando el usuario intenta imprimir el documento, puede intentar un truco del lado del servidor para rastrearlo.
Darle una oportunidad.
Para la compatibilidad con varios navegadores, solo si ofrece controlar la impresión, como en, agregando un botón de "pantalla en formato imprimible", que como mínimo le mostrará la intención de imprimir la página. Sin embargo, no podrá impedir que un usuario imprima por medios convencionales o detectar cuándo se está imprimiendo la página.
Puedes lograr esto solo en IE.
IE admite dos eventos del lado del cliente que puede manejar: onbeforeprint
y onafterprint
.
Puede agregar una solicitud AJAX en cualquier evento que llame a una página del lado del servidor para, por ejemplo, incrementar un contador de PagePrinted en una base de datos.
Sí, para la mayoría de los navegadores hay eventos que se pueden usar para rastrear solicitudes de impresión.
- IE5 + admite
window.onbeforeprint
ywindow.onafterprint
- Chrome9 + y Safari5.1 + son compatibles con
window.matchMedia()
Consulte la publicación del blog "Detección de solicitudes de impresión con JavaScript" de TJ VanToll para obtener más información.
También puede agregar un botón grande, obvio, "Imprimir" a la página, que window.print
, y realiza una solicitud de AJAX si onafterprint
no está disponible.
No le daría estadísticas sobre los usuarios que simplemente están presionando Ctrl + P (y no están en IE), por supuesto, pero le da algo (si no le importa pegar un botón "Imprimir" en la página) ).