2010-01-27 7 views
17

사용자가 웹 페이지를 인쇄하는지 추적 할 수 있습니까? 최소한, 당신에게 인쇄 할 의도를 표시합니다 버튼은 "인쇄 가능한 형식으로 표시"를 추가하면 같이 인쇄를 제어하기 위해 제공하는 경우에만 크로스 브라우저 지원에 대한사용자가 웹 페이지를 인쇄하는지 추적 할 수 있습니까?

감사합니다, 그레이엄

+2

사용자가 스크린 샷을 찍었거나 디지털 카메라를 사용했거나 웹 페이지를 전체 페이지로 다운로드하고 네트워크 카드를 뺀 다음 인쇄 한 경우는 어떻게됩니까? 패배의 싸움을하고 있습니다. –

+3

@ 카일 : OP는 사용자가 인쇄를 막을 의도가 없음을 보여줍니다. 그는 다른 목적을 위해 사용자의 행동을 추적하려고 시도 할 수도 있습니다. –

+0

@ 카일 - 내 목적은 사용자가 페이지를 인쇄했는지 알기 만하면됩니다. – Graham

답변

2

,,, 그 페이지. 그러나 사용자가 기존의 방법으로 인쇄를 중지하거나 페이지를 인쇄 할 때이를 감지 할 수는 없습니다.

3

IE에서만이를 수행 할 수 있습니다.

IE는 사용자가 처리 할 수있는 두 가지 클라이언트 측 이벤트 인 onbeforeprintonafterprint을 지원합니다.

데이터베이스의 PagePrinted 카운터를 증가 시키려면 서버 쪽에서 페이지를 호출하는 이벤트에 AJAX 요청을 추가 할 수 있습니다.

7

Internet Explorer 5 이상에서는 onafterprint 이벤트를 사용하여 페이지를 인쇄 할 때마다 AJAX 요청을 실행할 수 있습니다. 당신이 jQuery를 사용하는 경우, 다음을 수행 할 수 있습니다 :

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

을 어쩌면 당신은 다른 브라우저에서 인쇄 된 횟수를 추정하는 통계를 사용할 수 있습니다! 브라우저가 CSS를 가져올 것입니다 때 미디어 = "인쇄"

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

사용자가 문서를 인쇄하려고 할 경우에만 그들은 그것을 가져 오는 경우 당신이 시도하는 것보다 그들을 지정할 때

+3

GoogleAnalytics와 함께 사용할 수도 있습니다. $ .post 줄을 GA 코드의 적절한 비트로 바꿉니다. 이론 상으로는 누가 인쇄하고 있는지에 대해 더 잘 이해할 수 있습니다. :) – Amadiere

5

나도 몰라 그것을 추적하는 서버 측 속임수.

사용해보기.

+3

나는 그것에 대해 생각했지만 피들러 (Fiddler)로 확인해 보았습니다. IE와 Chrome처럼 보였습니다. –

+1

흥미로운 아이디어이지만 캐싱이 어떻게 상호 작용하는지 궁금합니다. –

+0

+1 매우 멋진 아이디어. –

19

@Tahir Akhtar는 인쇄 스타일 시트를 사용할 생각이있었습니다. 주석에 따르면 브라우저가 현재 인쇄보기에 있는지 여부에 관계없이 스타일 시트가 항상 반입되므로 작동하지 않습니다.

추가 복용 방법 : 인쇄 스타일 시트를 사용하여 이 렌더링 될 때 브라우저가 특정 리소스를 가져 오도록 스타일을 정의하십시오.. 리소스는 투명한 이미지를 반환합니다.

CSS 속성을 선택하는 경우 일반적으로 브라우저에서 렌더링하지 않기 때문에 background-image이 출력됩니다. 내 생각은 list-style-image 또는 cursor입니다.

<ul>은 전혀 위치를 변경하지 않고도 아무런 변화없이 트릭을 할 수 있다고 생각합니다. 가능한 브라우저 최적화로 인해 페이지 외부에 요소가 배치되는 것을 감히하지 않습니다. 해당 리소스에 액세스 할 때마다 페이지 나 인쇄 미리보기를 인쇄해야합니다.

어쩌면 나중에 테스트 할 수 없습니다. 누구든지 시도하면, 그것이 작동 여부를 듣고 싶습니다.

+0

유망 해 보입니다! 훌륭한 아이디어. +1 –

1

window.print을 발생시키는 페이지에 크고 분명한 "인쇄"버튼을 추가하고 onafterprint을 사용할 수없는 경우 AJAX 요청을 수행 할 수 있습니다.

물론 Ctrl + P를 누르고있는 사람 (IE에없는 사람)에 대해서는 아무런 통계도 제공하지 않지만 뭔가를 제공합니다 ("인쇄" 버튼을 누르십시오).

1
  1. 만 페이지를 열고 새 인쇄를 팝업 페이지에 인쇄 버튼이 CSS로 인쇄 (body 태그에 표시 없음)를 해제
  2. . 그런 다음 해당 URL을 사용자에게 연결할 수 있습니다 (일부 정보가있는 경우).
+0

-1 : 개발자가 일부 분석을하기 위해 (Ctrl-P에서 빈 페이지를 인쇄하여) 내 인생을 더욱 어렵고 혼란스럽게 만들었다면 사용자로서 나는 매우 불만 스러울 것입니다. – Adam

1

예, 대부분의 브라우저에는 인쇄 요청을 추적하는 데 사용할 수있는 이벤트가 있습니다.

  • window.onbeforeprintwindow.onafterprint

window.matchMedia() 자세한 내용은 TJ VanToll's "Detecting Print Requests with JavaScript" blog post를 참조

  • Chrome9 +와 Safari5.1 + 지원을 지원 + IE5.

  • 관련 문제