5

使用以下内容,我们可以禁用 Internet Explorer 中的打印屏幕或屏幕截图:

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

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

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

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

4

4 回答 4

28

是什么让您认为人们是否应该能够截屏是您的决定?

幸运的是没有浏览器,但 IE 允许您通过 JavaScript 访问剪贴板,所以您不走运:)

顺便说一句,如果我访问了您的网站并且它弄乱了我的剪贴板(它会覆盖那里的任何内容,即使它与您的网站无关) - 我可能已经在其中存储了一些我刚刚从某个文件中剪切的内容,我是将粘贴到不同的文件中,并且由于您的站点,它现在会丢失。

所以,结论是:停止那样做废话。

于 2011-05-09T14:51:31.340 回答
-1

它是一个操作系统功能、一个页面功能和一个打印功能,因此您需要做一些事情 - 以下步骤特定于 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();
                    }

然后作为额外的,要禁用打印和项目,您需要将打印媒体标记为不显示

@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

于 2021-07-20T07:21:42.113 回答
-5

尝试onKeyPress抓住 PrtScr 按钮,然后返回 false。这不漂亮,但我认为这会奏效。

于 2011-05-09T14:45:34.113 回答
-9
window.addEventListener("keyup",kPress,false);
function kPress(e)
{ 
var c=e.keyCode||e.charCode; 
if (c==44) alert("print screen");
}
于 2012-11-13T15:15:50.077 回答