Javascript 检测是否按下了ctrl按钮

Javascript 检测是否按下了ctrl按钮,javascript,Javascript,我想阻止用户打印页面 我想我会将屏幕设置为不包含工具栏,并防止右键单击,防止Ctrl+P和打印屏幕按钮。 这能做到吗 有什么好的代码吗?到目前为止,我找了不少,但运气不太好。我知道这不是万无一失的,但它会阻止一些用户复制或打印。你不能这样做……你不能禁用用户的打印能力,你也不应该尝试 Ctrl+p是程序员打印的方式,文件打印(取决于浏览器)是典型用户的打印方式……因此这甚至不会禁用最常用的方法。此外,任何一个优秀的程序员都可以绕过这个问题,所以它实际上不会阻止任何人 无论您向用户提供的任何数据是

我想阻止用户打印页面 我想我会将屏幕设置为不包含工具栏,并防止右键单击,防止Ctrl+P和打印屏幕按钮。 这能做到吗


有什么好的代码吗?到目前为止,我找了不少,但运气不太好。我知道这不是万无一失的,但它会阻止一些用户复制或打印。

你不能这样做……你不能禁用用户的打印能力,你也不应该尝试

Ctrl+p是程序员打印的方式,文件打印(取决于浏览器)是典型用户的打印方式……因此这甚至不会禁用最常用的方法。此外,任何一个优秀的程序员都可以绕过这个问题,所以它实际上不会阻止任何人


无论您向用户提供的任何数据是否显示,他们都可以查看、复制、打印等。您无法阻止这种情况发生,绝对不是100%。如果这是您的要求之一……您应该询问网站是否是提供这些数据的最佳方式。

一方面,信息成本高昂,因为它非常有价值。在正确的地方获得正确的信息只会改变你的生活。另一方面,信息想要免费,因为获取信息的成本一直在降低。所以这两个人互相争斗

另外:

信息想要自由,代码想要错误。

Nick Craver的答案是正确的,你不能阻止它,但无论如何,如果你想使用mootools检测组合键,你可以使用键盘类来定义组合键并向其中添加事件:


这可能有助于显示警告或类似的内容:)

这样做会激怒合法用户,如果你认为严重侵犯版权者使用常规浏览器(可以禁用其打印功能),那么你就大错特错了。

我同意上面的答案

用户总能找到解决方法, -计算机对于受版权保护的材料是不安全的,而且永远不会安全。 你需要考虑到这一点。


<script type="text/javascript">
function detectspecialkeys(e){
var evtobj=window.event? event : e
if (evtobj.altKey)
    alert("you pressed 'Ctrl'");
    evtobj.preventDefault();
}
document.onkeypress=detectspecialkeys
</script>
功能检测专用键(e){ var evtobj=window.event?事件:e if(evtobj.altKey) 警报(“您按下了“Ctrl”); evtobj.preventDefault(); } document.onkeypress=检测特殊键
例如,您可以使用jQuery。然而,想想看:浏览器运行在某个人拥有的客户端pc上。这个人应该控制他/她的设备上发生的事情。您不需要开始使用脚本来摆脱最终用户可能想要使用的标准功能

如果你不想打印一些东西,就不要在公共场所展示。如果它是机密的,就这样对待它


格尔茨,克里斯。

考虑到这一点。我同意其他答案,并提出了另一种解决方法。用户所要做的就是截图,它涉及到操作系统的应用层,其中一个你甚至不希望改变。在Ubuntu上,它甚至可以在用户的主菜单中执行此操作

如果您想让普通计算机用户无法使用它,这将有助于:

  • 创建一个应用程序,在输入您提供的密钥代码后加载并显示文档(通过Web服务器进行检查)
  • 应用程序没有打印功能,因为您没有将它们放入
  • 如果用户按下“printscreen”并显示版权警告,则注册全局键钩以清空文档

  • 几年前,我建立了一个考试系统,其中一个要求是让人们很难打印考试。如我们所知,删除打印功能是不可能的(除非您在浏览器软件中做一些更改)。你能做的就是让非技术人员更难打印页面。例如,当页面进入打印机时,使用CSS清空页面:

    <style type="text/css">
      @media print {
        body { display:none }
      }
    </style>
    

    算了吧。你不能阻止人们以任何方式打印、复制或使用他们的浏览器。唯一的解决办法是:如果你不想打印或复制你的内容,那么就不要把它放到网上。“就是这么简单,没有其他办法了。”罗托拉-有正当理由阻止某些正常功能。一种可能是它是一个公共终端。另一个是出于安全原因。@Gert:。。。但这在JS中无法实现(最好从键盘上删除打印和ctrl键:-)@chris_l-理想情况下,删除键盘和鼠标,最大化浏览器并使用触摸屏你需要检查
    .ctrlKey
    在这里,你正在检查
    alt
    ,无论如何,请不要这样打扰用户。不是我的否决票,但你至少应该修复你的示例代码:)@downvoter-帮助说出你不同意的原因,否则它对任何人都没有帮助。CSS-非常聪明;)虽然使用Firebug很容易规避,但它主要是为了让非技术人员更难使用。:)
    $(document).ready(function () {
      $(document).bind('copy paste', function (e) {
        e.preventDefault();
      });
    });