2010-06-20 175 views
2

我想阻止用户在打印网页 我想我会设置屏幕不包括工具栏,防止右点击,并防止按Ctrl + P,和打印屏幕按钮。 可以这样做吗?检测,如果Ctrl键被按下

是否有良好的代码在那里的呢?到目前为止,我搜索了很多,但没有太多的运气。我知道这不是万无一失的,但它会阻止一些用户复制或打印。

+8

算了。您不能以任何他们想要的方式阻止人们打印或复制或使用他们的浏览器。唯一的解决方案是:如果你不想打印或复制你的内容,那么不要把它放在网页上。这很简单,没有别的办法。 – RoToRa 2010-06-20 12:00:20

+0

@RoToRa - 防止某些正常功能的合理原因。一个可能是它是一个公共终端。另一个是出于安全原因。 – 2010-06-20 12:05:20

+0

@Gert:...但这不会在JS中完成(最好是从键盘上删除打印和Ctrl键:-) – 2010-06-20 12:27:28

回答

5

您不能这样做......您不能禁用用户的打印能力,如果您尝试,也不能使用

按Ctrl +P是方式程序员版画,文件>打印(取决于浏览器)是典型的用户的方式做...所以这不会连禁用最常用的方法。另外,任何体面的程序员都可以绕过这个,所以它不会阻止任何人。

你给用户的任何数据,或不显示,他们可以看到,复制,打印,等等......没有什么可以做,以避免这种情况,肯定不是100%。如果这是你的需求之一......你应该问,如果一个网站是提供这种数据的最佳方式。

+0

@downvoter - 有助于说**为什么**你不同意,否则它不会真的帮助任何人。 – 2010-06-20 12:55:50

1

一方面,信息想要是昂贵的,因为它是如此宝贵。在正确的地方正确的信息只会改变你的生活。在另一方面,信息想要免费,因为得到它的成本越来越低所有的时间。所以你们有这两个人相互对抗。 source

另外:
信息想要自由,代码想错了。

0

的@Nick Craver答案是正确的,你不能阻止它,但是反正如果你想使用的mootools你的键盘类,让你定义组合键,并添加事件,以它来检测组合键:

http://mootools.net/docs/more/Interface/Keyboard

,也许会显示警告或类似的:)

3

东西通过这样做有用,你会惹恼合法用户,如果你认为一个严重的版权违背使用常规浏览器(其印刷功能,你可以禁用),那么你错误。

1

我同意上面的答案。

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

-1
<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> 
+0

你需要在这里检查'.ctrlKey',你检查'alt',无论如何,请不要惹恼这样的用户。 – 2010-06-20 12:22:35

+0

不是我的downvote,但你至少应该修复你的示例代码:) – 2010-06-20 13:15:08

0

你可以这样用jQuery例如。不过想到这一点:浏览器运行在某人拥有的客户端PC上。那个人应该控制他/她的设备上发生的事情。开始使用脚本来取消最终用户可能想要使用的标准功能并不取决于您。

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

Grz,Kris。

0

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

1

如果你想要让这个普通电脑用户不能做到这一点,这将有助于:

  1. 创建一个加载应用程序,您提供的键码的输入之后,显示文档(通过网络服务器检查)。
  2. 的应用程序不具有打印功能,因为你没有把他们
  3. 注册一个全球keyhook到空白文档,如果用户按下“PRINTSCREEN”,并显示版权警告
1

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

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

下面的jQuery脚本将阻止拷贝粘贴&在某些浏览器:

$(document).ready(function() { 
    $(document).bind('copy paste', function (e) { 
    e.preventDefault(); 
    }); 
}); 
+0

CSS - 非常聪明;)虽然很容易规避使用Firebug。 – 2010-06-20 13:50:18

+0

这主要是为了让非技术人员变得更难。 :) – 2010-06-20 14:33:13