我目前正在做一个项目,我需要阻止用户拍摄任何网页的快照,为此他可以使用任何普通键盘中可用的“Print Scrn”/“Printscreen”键。
我一直试图找到它的解决方案,但徒劳无功。如果可能的话,我需要考虑 Firefox 浏览器的“ Screengrab ”插件,同时停止它。
非常感谢任何帮助,我正在为我的项目使用 PHP(作为服务器端语言)和 jQuery。
我目前正在做一个项目,我需要阻止用户拍摄任何网页的快照,为此他可以使用任何普通键盘中可用的“Print Scrn”/“Printscreen”键。
我一直试图找到它的解决方案,但徒劳无功。如果可能的话,我需要考虑 Firefox 浏览器的“ Screengrab ”插件,同时停止它。
非常感谢任何帮助,我正在为我的项目使用 PHP(作为服务器端语言)和 jQuery。
我讨厌“不可能”这句话。以下是为您提供帮助的所有解决方案:
1-您可以从 Haluk 获取解决方案:
<script type="text/javascript"> $(document).ready(function() {
$(window).keyup(function(e){
if(e.keyCode == 44){
$("body").hide();
}
}); });
</script>
但是,您隐藏身体,但已经“打印”到剪贴板。您可以触发另一个将一些文本复制到剪贴板的事件,正如您在此答案“Edit as of 2016”中看到的那样,使用 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();
}
});
这将阻止您的部分问题。如果用户关注此窗口之外的另一个对象,他将能够截取屏幕截图。**但是还有另一种解决方案,当窗口不聚焦时,只需禁用孔体。完整的解决方案,来自您亲爱的巴西朋友:
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();
});
这是工作示例:
这是不可能的。
您无法从 Web 浏览器禁用屏幕抓取功能,只能通过在用户 PC 上安装附加软件来实现。
有一些可用的 IRM(信息权限管理)工具可以做到这一点,例如通过保护 Windows/DirectX API 调用以及监控视频内存,例如Oracle IRM或Microsoft 的 IRM 技术。
尤其是后者可能会引起人们的兴趣,因为 Internet Explorer 还有一个权限管理插件。
但正如其他人已经说过的,任何 IRM/DRM 技术都是有争议的,您应该了解它通常会限制或惹恼您的用户。
值得庆幸的是,这个离谱的想法不可能可靠地实现,“禁用屏幕抓取”部分和“禁用用户的 Firefox 扩展”部分都不是。即使是这样,正如@kbok 在上面的评论中指出的那样,您也无权这样做。
在线保护您的内容的唯一方法是版权法 - 提及这些通常足以吓跑人们避免滥用它!- 或者根本不显示。
试试这个
$(document).keyup(function(e){
if(e.keyCode == 44) return false;
});
希望它有效
您可以使用 JavaScript 或 Flash 更改剪贴板的内容。这已经有点帮助了。
就像@Sjoerd 所说,这是不可能的。
如果是您要保护的图片,我建议您例如显示带有水印的低质量图像,并仅在适当时显示无水印的高质量图像。
但是,是的...如果您希望它们无法复制...请不要将它们放到网上。
没有直接的方法可以做到这一点,但是,有一种方法可以尽可能地保护您的内容免受 prnt scrn 的影响。
这个想法是这样的:
如果禁用 java,则使您的内容无法访问,并使用诸如 Artist Scope 的复制保护之类的脚本。
检测到 prnt scrn 将向管理员发送一条带有注册用户信息的消息,这意味着只有会员才能访问的受限内容可以从中受益。发送IP地址听起来是个好主意,但禁止 IP 不是,所以你不会从中获得很多好处。
一旦超出您的网站窗口,您的内容将被覆盖,除非您返回您的网站并激活它,否则您的内容将无法删除,这将重新激活上一点中提到的 prnt scrn 检测代码。
如果设备是移动设备,您可以隐藏图像,或者像我一样,重定向到“我们很抱歉”页面。
截图工具和其他类似的浏览器扩展和附加组件将毫无用处。除了我发现的一种称为全页屏幕捕获的工具
还有一种间接的方法可以防止视频捕获,仍在研究中,将在此处或我的博客中发布。
如果您的内容真的那么值得,用户可能仍然使用他们的相机捕捉它,也可能有一种方法!但在谈论它之前,我还需要做一些研究。
当用户单击键打印屏幕时,您可以将其他内容复制到剪贴板。这是示例,我复制用户文本。
<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');
};
});
});
为什么要阻止打印屏幕?
如果您想保护一些照片,您可能希望将其设置为低分辨率,并以编程方式在 php.ini 中包含某种版权标志。
我想就差不多了。
这是另一个解决方案:
<script type="text/javascript"> $(document).ready(function() {
$(window).keyup(function(e){
if(e.keyCode == 44){
$("body").hide();
}
}); }); </script>
这类似于@ZX12R 的解决方案。好处是即使打印屏幕捕捉软件是第 3 方工具(例如 snagIt),此代码也可以工作。
你可以$("body").hide();
用更适合你的东西来代替。例如,您可以隐藏所有图片$("img").hide();
,并可能在一秒钟后将它们显示回来。
缺点是如果网页不是活动窗口,它将不起作用。