2010-01-27 11 views
17

Czy istnieje sposób śledzenia, czy użytkownik drukuje stronę internetową?Czy istnieje sposób śledzenia, czy użytkownik drukuje stronę internetową?

Dzięki Graham

+2

Co zrobić, jeśli użytkownik zrobił zrzut ekranu, użył aparatu cyfrowego lub pobrał stronę internetową jako kompletną stronę, odłączył swoją kartę sieciową, a następnie wydrukował? Walczysz przegrywającej bitwie. –

+3

@Kyle: OP nie wykazały zamiaru blokowania użytkownikom drukowania. Równie dobrze mógłby próbować śledzić zachowanie użytkownika w innym celu. –

+0

@Kyle - Moim celem jest po prostu wiedzieć, czy użytkownik wydrukował stronę ... chcemy, żeby to zrobili. – Graham

Odpowiedz

2

uzyskać pomoc przekroju przeglądarki, tylko jeśli oferta kontrolować drukowanie, jak w, dodając „wyświetlacz w formacie do wydruku” przycisku, który będzie na minimum, pokazać zamiarem druku Strona. Jednak nie będzie można zatrzymać użytkownika od drukowania w tradycyjny sposób lub wykryć, kiedy strona jest drukowana.

3

Możesz to osiągnąć tylko w IE.

IE obsługuje dwa zdarzenia po stronie klienta, które można obsłużyć: onbeforeprint i onafterprint.

Możesz dodać żądanie AJAX w dowolnym zdarzeniu, które wywoła stronę po stronie serwera, na przykład, zwiększy licznik PagePrinted w bazie danych.

7

W programie Internet Explorer 5+ można użyć zdarzenia onafterprint, aby uruchomić żądanie AJAX za każdym razem, gdy strona zostanie wydrukowana. Jeśli używasz jQuery, można wykonać następujące czynności:

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

Wtedy może można korzystać z niektórych statystyk oszacować ile razy było wydrukowanych z innych przeglądarek!

+3

Można to również wykorzystać w połączeniu z GoogleAnalytics. Wystarczy zastąpić linię $ .post odpowiednim bitem kodu GA. Może to teoretycznie dać lepszy kontekst o tym, kto drukuje i tak dalej. :) – Amadiere

5

nie wiem kiedy przeglądarek będzie pobierał CSS, gdy podasz im media = „print”

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

Gdyby sprowadzić go tylko wtedy, gdy użytkownik próbuje wydrukować dokument, niż można spróbować sztuczka po stronie serwera do śledzenia.

Spróbuj.

+3

Pomyślałem o tym, ale sprawdziłem z Fiddler i wygląda na to, że IE i Chrome pobierają je natychmiast. –

+1

Interesujący pomysł, ale zastanawiam się, w jaki sposób buforowanie może wchodzić w interakcje z tym. –

+0

+1 Bardzo fajny pomysł. –

19

@Tahir Akhtar wpadł na pomysł użycia arkusza stylów drukowania. Zgodnie z komentarzami, to nie działa, ponieważ arkusz stylów jest zawsze pobierany, niezależnie od tego, czy przeglądarka jest aktualnie w widoku do druku, czy nie.

Co dalej robić dalej: Użyj arkusza stylów drukowania i określ w nim styl, który powoduje, że przeglądarka pobiera pewien zasób, gdy jest renderowany. Zasób zwróci przezroczysty obraz.

Jeśli chodzi o wybór właściwości CSS, background-image jest obecnie niedostępny, ponieważ zazwyczaj nie są renderowane przez przeglądarkę. Moją myślą byłby list-style-image lub cursor.

Myślę, że list-style-image na absolutnie pozycjonowanym, przezroczystym <ul> może zrobić lewę bez wizualnej zmiany czegokolwiek (nie odważyłbym się umieścić elementu poza stroną ze względu na możliwe optymalizacje przeglądarki wycinające go). Każdy dostęp do tego zasobu powinien być pochodzić z drukowania strony lub podglądu wydruku.

Nie mogę tego przetestować teraz, może później. Jeśli ktokolwiek spróbuje, to chciałbym usłyszeć, czy to działa.

+0

To wygląda obiecująco! Świetny pomysł. +1 –

1

Można też dodać duży przycisk jest oczywisty, „Drukuj” na stronie, że pożary window.print, a nie żądania AJAX jeśli onafterprint nie jest dostępna.

Nie dałoby to żadnych statystyk dotyczących użytkowników, którzy po prostu naciskają Ctrl + P (i nie są na IE), oczywiście, ale daje ci coś (jeśli nie masz nic przeciwko trzymaniu "Wydruku" przycisk na stronie).

1
  1. Wyłącz drukowanie z CSS (bez wyświetlacza na znacznika body)
  2. mają przycisk wydruku na stronie, która otwarła nowy druk tylko strona. Następnie możesz powiązać ten URL z użytkownikiem (pod warunkiem, że masz jakieś informacje na ten temat).
+0

-1: Jako użytkownik byłbym niezmiernie niezadowolony, gdyby programista utrudnił mi życie i wprowadził zamieszanie (drukując pustą stronę na Ctrl-P), aby uzyskać trochę informacji analitycznych. – Adam

1

Tak, w przypadku większości przeglądarek istnieją zdarzenia, które można wykorzystać do śledzenia żądań drukowania.

  • IE5 + obsługuje window.onbeforeprint i window.onafterprint
  • Chrome9 + i Safari5.1 + support window.matchMedia()

Zobacz TJ VanToll's "Detecting Print Requests with JavaScript" blog post aby uzyskać więcej informacji.

Powiązane problemy