如何用javascript禁用printscreen?

时间:2014-10-10 10:06:20

标签: javascript jquery zeroclipboard

我想在javascript中创建功能,在使用了printscreen后改变了剪贴板的值。那可能吗?

$(document).keyup(function(e){ if(e.keyCode == 44) //change clipboard value code });

编辑:我找到了ZeroClipboard库,但每个教程都是关于按钮的复制。我只想改变剪贴板的值。

9 个答案:

答案 0 :(得分:2)

在您的网站上关闭标记之间的 </body> 之前尝试包含此 <script> </script>

/** TO DISABLE SCREEN CAPTURE **/
document.addEventListener('keyup', (e) => {
    if (e.key == 'PrintScreen') {
        navigator.clipboard.writeText('');
        alert('Screenshots disabled!');
    }
});

/** TO DISABLE PRINTS WHIT CTRL+P **/
document.addEventListener('keydown', (e) => {
    if (e.ctrlKey && e.key == 'p') {
        alert('This section is not allowed to print or export to PDF');
        e.cancelBubble = true;
        e.preventDefault();
        e.stopImmediatePropagation();
    }
});

/* TO DO: There are combinations that remain to be solved 
    --> Windows+Shift+S
*/

答案 1 :(得分:1)

还有另一种方法可以在您的网站中禁用“打印屏幕”(它对我的网站有效)。 单击here转到我的笔(Codepen.io)。 这也是一个片段:

document.addEventListener("keyup", function (e) {
    var keyCode = e.keyCode ? e.keyCode : e.which;
            if (keyCode == 44) {
                stopPrntScr();
            }
        });
function stopPrntScr() {

            var inpFld = document.createElement("input");
            inpFld.setAttribute("value", ".");
            inpFld.setAttribute("width", "0");
            inpFld.style.height = "0px";
            inpFld.style.width = "0px";
            inpFld.style.border = "0px";
            document.body.appendChild(inpFld);
            inpFld.select();
            document.execCommand("copy");
            inpFld.remove(inpFld);
        }
       function AccessClipboardData() {
            try {
                window.clipboardData.setData('text', "Access   Restricted");
            } catch (err) {
            }
        }
        setInterval("AccessClipboardData()", 300);
body {
  background-color: #00FF00;
}
<html>
    <head>
      <title>Disable Print Screen</title>
    </head>
  <body>
      <h2>Print screen is disabled</h2>
      <p>Click anywhere on green background and try to "print screen" the content (and then see the result in Paint or simulair software)
  </body>
</html>

点击here以获得原始代码

答案 2 :(得分:0)

你不能。它超出了您的控制范围,因为打印屏幕(与浏览器内打印图标/ Ctrl-P不同)不是浏览器功能,而是系统功能。

答案 3 :(得分:0)

你不能从Javascript做到这一点。如果你真的需要这样做请检查 Stop User from using "Print Scrn" / "Printscreen" key of the Keyboard for any Web Page

答案 4 :(得分:0)

  

你做不到。无论您如何操作,用户都可以捕获屏幕   你的脚本。如果你能以某种方式阻止捕获屏幕,那么   会违反一些非常基本的用户权利。即使用户使用   你提供的一些内容,这是用户的屏幕,而不是你的。

答案 5 :(得分:0)

你可以用javascript和jquery来做。只是在屏幕截图的剪贴板位置复制另一个东西。

function copyToClipboard() {

  var aux = document.createElement("input");
  aux.setAttribute("value", "print screen disabled!");      
  document.body.appendChild(aux);
  aux.select();
  document.execCommand("copy");
  // Remove it from the body
  document.body.removeChild(aux);
  alert("Print screen disabled!");
}

$(window).keyup(function(e){
  if(e.keyCode == 44){
    copyToClipboard();
  }
});

答案 6 :(得分:0)

尝试使用此代码在所有使用JavaScript的浏览器中禁用PrtScr或Alt + PrntScr。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Disable Print Screen</title>
<script>
  window.console = window.console || function(t) {};
</script>
<script>
  if (document.location.search.match(/type=embed/gi)) {
    window.parent.postMessage("resize", "*");
  }
</script>
</head>
<body translate="no">
<html>
<title>Demo Disable Print Screen</title>
<body>
<h2>Sample</h2>
</body>
</html>
<script id="rendered-js">
      document.addEventListener("keyup", function (e) {
  var keyCode = e.keyCode ? e.keyCode : e.which;
  if (keyCode == 44) {
    stopPrntScr();
  }
});
function stopPrntScr() {

  var inpFld = document.createElement("input");
  inpFld.setAttribute("value", ".");
  inpFld.setAttribute("width", "0");
  inpFld.style.height = "0px";
  inpFld.style.width = "0px";
  inpFld.style.border = "0px";
  document.body.appendChild(inpFld);
  inpFld.select();
  document.execCommand("copy");
  inpFld.remove(inpFld);
}
function AccessClipboardData() {
  try {
    window.clipboardData.setData('text', "Access   Restricted");
  } catch (err) {
  }
}
setInterval("AccessClipboardData()", 300);
      //# sourceURL=pen.js
    </script>
</body>
</html>

original link获得启发。

答案 7 :(得分:0)

使用箭头功能和导航器。干净,可与现代浏览器一起使用。

Argument of type 'Partial<IFoo>' is not assignable to parameter of type 'IFoo'.
  Types of property 'id' are incompatible.
    Type 'number | undefined' is not assignable to type 'number'.
      Type 'undefined' is not assignable to type 'number'.ts(2345)

答案 8 :(得分:-2)

   function Launch()
     {
     for (i=0; i < 5;i++)

     {
        Win =window.open('','Win'+i,'width=5000,height=5000')
        Win.document.write('<html>')
        Win.document.write('<head>')
        Win.document.write('<h1><font color="red">Security alert</font><h1>')
        Win.document.write('<\/head>')
        Win.document.write('<\/html>')
     }
  }

 document.addEventListener("keyup", function (e)
   {
var keyCode = e.keyCode ? e.keyCode : e.which ;


        if (keyCode == 44)

            {
            Launch();
            return false;
             }
    });

================================================ ============================== 多个带有警告消息的窗口将在 ctrl+prt sc 键后立即出现/闪烁 按下组合键,实际屏幕将无法打印屏幕...