有没有一种方法可以跟踪用户是否打印了网页?
谢谢, Graham
有没有一种方法可以跟踪用户是否打印了网页?
谢谢, Graham
@Tahir Akhtar提出了使用打印样式表的想法。根据评论,这不起作用,因为无论浏览器当前是否处于打印视图中,样式表都会被获取。
那么我们怎么进一步处理呢?可以使用打印样式表并在其中定义一个样式,使得渲染时浏览器获取特定的资源。该资源将返回一个透明图片。
至于CSS属性的选择,background-image
不能用,因为它们通常不被浏览器渲染。我的想法是使用list-style-image
或 cursor
。
我认为对于绝对定位的透明的<ul>
元素,应该使用list-style-image
来解决问题,而不会在视觉上改变任何东西(我不敢将元素定位在页面外面,因为可能会被浏览器优化削减掉)。每次访问该资源应该来自打印页面或打印预览。
我现在无法进行测试,也许以后可以。如果有人尝试了,请告诉我它是否有效。
在Internet Explorer 5+中,您可以使用onafterprint
事件,在每次打印页面时启动一个AJAX请求。如果您正在使用jQuery,您可以执行以下操作:
window.onafterprint = function()
{
$.post("increment_print_counter.php");
};
我不知道当你使用media="print"指定CSS时,浏览器何时会获取它们。
<link rel="stylesheet" type"text/css"
href="print.css" media="print">
media=print
样式表。 - Daniel Vassalloonbeforeprint
和 onafterprint
。为了实现跨浏览器支持,只有当您提供控制打印的选项时,才能做到这一点。例如,添加一个“以可打印格式显示”的按钮,至少可以显示您打算打印该页面的意图。然而,您将无法通过常规方式阻止用户进行打印,也无法检测页面何时正在被打印。
window.print
,如果onafterprint
不可用,则进行AJAX请求。对于大多数浏览器,都有可用于跟踪打印请求的事件。
window.onbeforeprint
和 window.onafterprint
window.matchMedia()
有关更多信息,请参见TJ VanToll的“使用JavaScript检测打印请求”博客文章。