如何在所有浏览器中禁用网页的截屏功能?

6

使用以下方法可以在Internet Explorer中禁用打印屏幕或截图:

<body onload=setInterval("window.clipboardData.setData('text','')",2) 

oncontextmenu="return false" onselectstart="return false">

但是这些方法在Mozilla、Chrome和其他浏览器中不起作用。

有没有更好的方法来禁用打印屏幕/截图?


10
好的, 太好了 你禁用了打印屏幕。那么微软Windows屏幕截图和其他任何截屏工具呢?我不确定阻止它的意义在哪里... - Naftali
13
那是一些很恶心的代码,真的让我很生气。如果我正在使用剪贴板进行其他操作呢?你刚才摧毁了我所有应用程序的剪贴板。此外,在其他浏览器中不可能在没有用户交互的情况下操纵剪贴板,并需要透明的Flash内容。请,请重新考虑你正在做的事情。如果您不想被复制,请不要将其放在网络上。 - spender
2
即使您禁用了打印屏幕功能,仍然可以使用相机拍摄显示器的照片。 - Enrique
5
我很惊讶IE允许这种疯狂的事情发生。 - spender
2
简而言之,如果你不想让任何人从你的网站上拿走它,就不要放上去。 - Lee Kowalkowski
这个关于Netflix如何防止截屏的问题可能会引起人们的兴趣,这里是相关链接:https://dev59.com/9lIG5IYBdhLWcg3wvD85 - Lucio Paiva
3个回答

30

你认为是不是由你决定别人是否可以截屏呢?

幸运的是,除了IE浏览器外,其他浏览器都不能通过JavaScript访问剪贴板,所以你没有机会 :)

顺便说一下,如果我访问了你的网站,它损坏了我的剪贴板(即使与你的网站无关的内容也被覆盖了),那么我可能已经在里面存储了某些东西,刚刚从某个文件中复制并要粘贴到另一个文件中,现在由于你的网站,它将永久丢失。

因此,结论是:别再做这种破事了。


4
经常情况下我们会向客户发出警告,但他们还是会坚持自己的想法。如果他们执意要自食其果... - ProfK
6
原文:“the OP's question was to suggest a better idea... "Stop doing crap like that." IS a better idea.”翻译:原帖的问题是建议一个更好的想法……“停止做那种垃圾事”是一个更好的想法。 - Wim Ombelets
POPIA和GPDR的安全要求使您的论点无效,因此今天有必要阻止打印屏幕上可能被复制或保存下来的任何敏感信息。 - Marc Magon
@ThiefMaster 从编程和设计使用的角度来看,我同意你的观点。但是从商业安全和法律角度来看,我不太赞同 :) 我很重视你的意见,但我也有编写代码的目标和要求。捕获和劫持剪贴板并不是最好的答案,但这并不意味着我们应该停止做那样的事情 - 而是要想办法以不会造成干扰的方式来实现它。感谢你的观点 :) - Marc Magon

-2

这是一个操作系统功能,也是页面功能和打印功能,因此有一些事情需要做 - 以下步骤针对Windows,但可以在具有相同概念的任何操作系统中实现 -

  1. 在操作系统级别禁用打印屏幕
Here are the steps of disable Print Screen key:

1.Copy the following registry to notepad and saved as a .reg file.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,00,00,2a,e0,00,00,37,e0,\
00,00,54,00,00,00,00,00
2.Apply the registry 
3.Sign out and sign in again.

如果您使用的是具有增强打印屏幕功能的 Chrome、Edge 或 Firefox 扩展程序,则需要阻止浏览器捕获屏幕的能力。此外,为了加强保护措施,可以禁用右键点击(我将其放在文档上,但您也可以按 DOM 进行设置)。

  document.addEventListener('contextmenu', 
                        event => event.preventDefault());
                        
                        window.addEventListener("keyup",kPress,false);
                    function kPress(e)
                    { 
                    var c=e.keyCode||e.charCode; 
                    if (c==44) event.preventDefault();
                    }

然后作为额外的步骤,要禁用打印和项目,您需要将打印媒体标记为 display none

@media print {
               .noprint {
                  visibility: hidden;
               }
            }

如果您想要符合POPIA/GDPR的规定,您必须禁用诸如pdf下载、对象引用等功能。作为额外的奖励项目,使用PDF.js将pdf渲染为html,并完全控制PDF的呈现、下载和打印。

此参考允许密码输入,并成功地使我们完全控制从受保护站点捕获或保存信息的所有功能。

https://usefulangle.com/post/22/pdfjs-tutorial-2-viewing-a-password-protected-pdf


-9
window.addEventListener("keyup",kPress,false);
function kPress(e)
{ 
var c=e.keyCode||e.charCode; 
if (c==44) alert("print screen");
}

12
欢迎来到Stack Overflow!请不要只发布一大段代码,还需说明这段代码是如何解决所提出的问题。没有解释的话,这不算是一个答案。 - Martijn Pieters
2
你不能禁用打印屏幕功能。所以请在发布代码之前进行测试。 - juhi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接