有没有办法跟踪用户是否打印网页?

Gra*_*ham 19 html javascript browser printing

有没有办法跟踪用户是否打印网页?

谢谢,格雷厄姆

Pek*_*ica 20

@Tahir Akhtar有使用打印样式表的想法.根据评论,这不起作用,因为始终提取样式表,无论浏览器当前是否处于打印视图中.

如何进一步:使用打印样式表并在其中定义一个样式,使浏览器在呈现时获取某个资源.资源将返回透明图像.

至于CSS属性的选择,background-image是因为它们通常不是由浏览器呈现的.我的想法是一个list-style-image或一个cursor.

我认为list-style-image在一个绝对定位,透明<ul>可能会做到这一点,而不会在视觉上改变任何东西(我不敢将元素放在页面之外,因为可能的浏览器优化会将其删除).对该资源的每次访问都应来自打印页面或打印预览.

我现在无法测试,也许以后.如果有人试过,我有兴趣听听它是否有效.


Dan*_*llo 7

在Internet Explorer 5+中,您可以使用该onafterprint事件,在每次打印页面时启动AJAX请求.如果您使用的是jQuery,则可以执行以下操作:

window.onafterprint = function()
{
    $.post("increment_print_counter.php");
};
Run Code Online (Sandbox Code Playgroud)

那么也许您可以使用一些统计数据来估计从其他浏览器打印的次数!

  • 这也可以与GoogleAnalytics结合使用.只需用GA代码的相应位替换$ .post行.从理论上讲,这可以为您提供有关谁是打印等的更好背景信息.:) (3认同)

Tah*_*tar 5

我不知道当你用media ="print"指定它们时浏览器何时会获取CSS

<link rel="stylesheet" type"text/css"
     href="print.css" media="print">
Run Code Online (Sandbox Code Playgroud)

如果他们仅在用户尝试打印文档时才会获取它,而不是尝试使用服务器端技巧来跟踪它.

试试看.

  • 我考虑过这个问题,但是我和Fiddler一起检查过,看起来IE和Chrome会立即获取它们. (3认同)

Geo*_*ton 2

对于跨浏览器支持,仅当您提供控制打印时,例如添加“以可打印格式显示”按钮,该按钮至少会向您显示打印页面的意图。但是,您将无法通过传统方式阻止用户打印或检测页面何时正在打印。