如何在所有浏览器中禁用网页的打印屏幕功能

How can I disable print-screen functionality for a webpage in all browsers?

本文关键字:网页 打印 功能 屏幕 浏览器      更新时间:2023-09-26

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

<body onload=setInterval("window.clipboardData.setData('text','')",2) 
oncontextmenu="return false" onselectstart="return false">

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

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

是什么让你认为人们是否应该能够截取屏幕截图是你的决定?

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

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

所以,结论是:别再做这样的废话了。

这是一个操作系统函数,也是一个页面函数和一个打印函数,所以你需要做一些事情 - 以下步骤特定于窗口,但可以在任何具有相同概念的操作系统中实现 -

  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

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