停止用户使用任何网页键盘的“Print Scrn”/“Printscreen”键

我目前正在做一个项目,在这个项目中,我需要停止用户拍摄任何网页的快照,为此他可以使用普通键盘上的“Print Scrn”/“Printscreen”键。

我一直在试图find解决办法,但徒劳无功。 如果可能的话,我需要考虑Firefox浏览器的“ Screengrab ”插件,也可以停止它。

任何帮助非常感谢,我正在使用PHP(作为服务器端语言)&jQuery为我的项目。

您不能禁用Web浏览器的屏幕抓取,只能通过在用户的PC上安装附加软件来实现。

有一些IRM(信息权限pipe理)工具可以通过保护Windows / DirectX API调用以及监视诸如Oracle IRM之类的video内存或者诸如微软的IRM技术来实现 。

特别是后者可能是有趣的,因为还有一个Internet Explorer的权限pipe理附件 。

但正如其他人所说,任何IRM / DRM技术都是有争议的,你应该明白,它经常会限制或惹恼你的用户。

这不可能。

我讨厌“这不可能”的句子。 以下所有解决scheme可以帮助您:

1-您可以从Haluk处获得解决scheme:

<script type="text/javascript"> $(document).ready(function() { $(window).keyup(function(e){ if(e.keyCode == 44){ $("body").hide(); } }); }); </script> 

但是,你隐藏身体,但已经“打印”到剪贴板。 您可以触发另一个事件,将一些文本复制到您的剪贴板,就像你可以在这个答案上看到的一样“编辑截至2016” 点击button复制到剪贴板使用jQuery ,就像这样:

 function copyToClipboard() { // Create a "hidden" input var aux = document.createElement("input"); // Assign it the value of the specified element aux.setAttribute("value", "Você não pode mais dar printscreen. Isto faz parte da nova medida de segurança do sistema."); // Append it to the body document.body.appendChild(aux); // Highlight its content aux.select(); // Copy the highlighted text document.execCommand("copy"); // Remove it from the body document.body.removeChild(aux); alert("Print screen desabilitado."); } $(window).keyup(function(e){ if(e.keyCode == 44){ copyToClipboard(); } }); 

这将阻止你的问题的一部分。 如果用户把注意力集中在这个窗口之外的另一个对象上,他将能够截取屏幕截图。 **但是还有另外一个解决scheme,当窗口不重点时,只需禁用孔体。 完整的解决scheme,从你亲爱的巴西的朋友:

 function copyToClipboard() { // Create a "hidden" input var aux = document.createElement("input"); // Assign it the value of the specified element aux.setAttribute("value", "Você não pode mais dar printscreen. Isto faz parte da nova medida de segurança do sistema."); // Append it to the body document.body.appendChild(aux); // Highlight its content aux.select(); // Copy the highlighted text document.execCommand("copy"); // Remove it from the body document.body.removeChild(aux); alert("Print screen desabilitado."); } $(window).keyup(function(e){ if(e.keyCode == 44){ copyToClipboard(); } }); $(window).focus(function() { $("body").show(); }).blur(function() { $("body").hide(); }); 

这里是工作的例子:

在这里,我尝试着把窗口放在焦点上,然后隐藏内容并显示模式

值得庆幸的是,这个不可思议的想法是不可能实现的,既不是“禁用屏幕抓取”部分,也不是“禁用用户的Firefox扩展”之一。 即使是这样,正如@kbok在上面的评论中指出的那样,你没有权利这样做。

在网上保护您的内容的唯一方法是版权法 – 提及这些往往足以吓跑人们滥用它! – 或者根本不显示。

尝试这个

 $(document).keyup(function(e){ if(e.keyCode == 44) return false; }); 

希望它的作品

您可以使用JavaScript或Flash更改剪贴板的内容。 这已经有点帮助了。

就像@Sjoerd说的,这是不可能的。

如果是要保护的图片,我build议您例如显示质量较低的图像,而不是水印,而只在适当的时候显示无水印的高质量图像。

但是,如果你想让他们不可能复制…不要把他们放在网上。

有没有直接的方法来做到这一点,但是,有一种方法来保护您的内容尽可能从prnt scrn。

这个想法是这样的:

  1. 如果禁用了Java,则无法访问您的内容,并使用Artist Scope的复制保护等脚本。

  2. 检测到prrn scrn将向注册用户信息发送一条消息给pipe理员,这意味着只有会员才能访问的受限内容才能从中受益。 发送IP地址听起来似乎是一个好主意,但禁止IP地址不是,所以你不会从中获得很多好处。

  3. 一旦在您的网站窗口之外,您的内容将覆盖覆盖,除非您回到您的网站并激活它,否则将无法删除,这将重新激活前面提到的prnt scrn检测代码。

  4. 如果设备是手机,您可以隐藏图像,或者在我的情况下,redirect到“我们很抱歉”页面。

  5. 剪切工具和其他类似的浏览器扩展和附加组件将是无用的。 除了我发现的一个叫做整页屏幕截图的工具

    • 这个工具在按下button大约3秒后捕获网页内容,这是足够的时间来解散覆盖,并返回到您的内容
    • 一个好的转换就是启动一个计数器,当“解除覆盖”被点击,将需要5秒或更多,即。 之后这个扩展已经快照了
  6. 还有一个间接的方法来防止video捕获,仍然在工作,将它张贴在这里或在我的博客。

  7. 如果你的内容真的是值得的,用户可能仍然使用他们的相机捕捉它,也可能有一种方法! 但在谈论之前,我需要做一些研究。

我将在我的博客中更新这篇文章 ,介绍其他技术,我已经使用/将用于更多的保护。 请检查此测验 (仍在开发中)进行演示。

为什么要防止打印屏幕?

如果这是一些你想要保护的照片,你可能想把它放在低分辨率,并包括一些版权的标志在PHP编程。

我认为这是非常多的。

当用户点击按键打印屏幕时,您可以复制到其他剪贴板。 这是例子,我复制用户文本。

 <p id="test">test</p> function copyToClipboard(elementId) { // Create a "hidden" input var aux = document.createElement("input"); // Assign it the value of the specified element aux.setAttribute("value", document.getElementById(elementId).innerHTML); // Append it to the body document.body.appendChild(aux); // Highlight its content aux.select(); // Copy the highlighted text document.execCommand("copy"); // Remove it from the body document.body.removeChild(aux); } $(document).ready(function(){ $(window).keyup(function(e){ if(e.keyCode == 44){ copyToClipboard('test'); }; }); }); 

这是另一个解决scheme:

 <script type="text/javascript"> $(document).ready(function() { $(window).keyup(function(e){ if(e.keyCode == 44){ $("body").hide(); } }); }); </script> 

这与@ ZX12R的解决scheme类似。 好处是,即使打印屏幕捕捉软件是第三方工具(如snagIt),该代码也能正常工作。

你可以replace$("body").hide(); 有些东西会更适合你 例如,你可以隐藏所有的图片$("img").hide(); 也许以后会再看一遍。

缺点是,如果网页不是活动窗口,则不起作用。

Interesting Posts