检测浏览器打印事件

是否有可能检测到用户从浏览器打印什么东西?

复杂的是,如果我们在一个新窗口中向用户展示PDF文档,是否有可能检测到该文档的打印(假设用户从浏览器窗口打印)?

我能find的最接近的是如果我们实现自定义打印function(类似这样 ),并跟踪何时被调用

我主要感兴趣的解决scheme,适用于Internet Explorer(6或更高版本)

您现在可以使用以下技术在IE 5 +,Firefox 6 +,Chrome 9 +和Safari 5 +中检测打印请求:

(function() { var beforePrint = function() { console.log('Functionality to run before printing.'); }; var afterPrint = function() { console.log('Functionality to run after printing'); }; if (window.matchMedia) { var mediaQueryList = window.matchMedia('print'); mediaQueryList.addListener(function(mql) { if (mql.matches) { beforePrint(); } else { afterPrint(); } }); } window.onbeforeprint = beforePrint; window.onafterprint = afterPrint; }()); 

我进入更多的细节,这是做什么,它可以用于http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/

对于Internet Exploder来说,有事件window.onbeforeprintwindow.onafterprint但是它们不能和其他任何浏览器一起工作,结果通常是没用的。

他们似乎工作完全一样,出于某种原因,都在打印窗口之前执行它们的事件处理程序。

但是,如果你想要它,尽pipe这些警告,这里是一个例子:

 window.onbeforeprint = function() { alert("Printing shall commence!"); } 

如果只是为了跟踪目的,也许你可以在CSS打印介质中设置一个背景URL到服务器页面(.aspx,.php等),然后在服务器上执行一些操作?

这家伙声称它的作品。

这不像TJ的解决scheme那么复杂,但是当只需要跟踪时,这可能不是TJ的解决scheme(请参阅TJs博客发现的问题)。