如何阻止用户打印网页?使用javascript或jquery

时间:2011-07-11 08:10:18

标签: javascript jquery css

我们如何阻止用户使用不同的方法打印网页?

  1. 禁用右键单击
  2. 禁用 Ctrl P 组合键
  3. 右键单击 - >打印
  4. 有没有办法停止打印网页?

    我们可以使用javascript处理这3个事件吗? 或者我们可以说。如果用户将执行任何这些事件。然后我想运行我的其他代码。这可能吗?

10 个答案:

答案 0 :(得分:16)

用户计算机上的网页无法控制。用户可以执行他或她想做的任何事情,但是您可以提供PDF并禁用打印PDF。不过,如果我必须打印一些东西,我会找到一种方法来打印它。

答案 1 :(得分:12)

正如已经指出的那样,你不能这样做。但是,一个常用的技巧是尝试隐藏所有页面内容(如果正在打印):

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

但这无法保证能够正常工作,如果你对你正在做的事情有一个模糊的想法,那就很容易解决。

答案 2 :(得分:7)

我知道这个问题在很久以前就被问过并回答了,但是我发现它并觉得我应该把我的2美分投入。我有一个程序里面有一些版权信息,我们希望结束用户无法打印此信息,因此我所做的是创建一个单独的div,我给了课程.printable

我将这些行添加到CSS表格

.printable { display:none; }
@media only print {
    .container { display:none !important; } <-- This is the wrapper container for all of the site data
    .printable { display:block !important; } <-- This is my added printable container with a message about not printing the page
}

随着主流浏览器中新CSS引擎的改进,即使他们右键单击+打印,它也会显示.printable框而不是内容。

然而,有人指出,如果他们真的想要,就没有办法阻止用户使用一块屏幕捕获软件来打印信息。我们认为,通过阻止印刷,我们将阻止大约99%可能以其他方式印刷信息的人。

所以这是我的2美分......希望它有助于某人

答案 3 :(得分:6)

你不能。不要浪费你的时间。

一旦用户将您网站的数据下载到他的计算机上,就再也无法控制它了。如果您不希望用户按照自己喜欢的方式处理它,不要把它放在公共网上。

答案 4 :(得分:4)

将此块添加到CSS

@media print {
  body {
    display: none;
  }
}

这应该在打印时隐藏所有内容。

答案 5 :(得分:2)

没有可靠的方法来做到这一点。您可以截取某些按键等并使用脚本取消它们,但是当用户禁用了脚本时,则无法进行预防。此外,打印功能内置于实际的浏览器本身,您实际上无法阻止这一点。

即使是像Aviary这样的浏览器插件也会获取浏览器的屏幕截图并将其复制到内存中,这样您就无法阻止这种情况发生。然后用户可以从photoshop打印或绘制.net等。

我建议你尝试的唯一一件事就是你可以只包含print.css样式表。在该样式表中,您可能希望尝试将任何敏感内容设置为display:none。但是,即使这样也无法保证,因为用户可以简单地禁用样式表。

答案 6 :(得分:2)

我不会打击用户的期望。不要更改默认行为。

答案 7 :(得分:1)

我尝试过克里斯的这种方式

@media only print {
.container { display:none !important; }
}

正在工作。 但是,当我按F12键打开开发人员工具时,找到“ .container {display:none!important;}”行,将其删除,然后按ctrl + p,一切都会再次显示在打印窗口中。 对于阻止打印网页内容,可能没有100%的解决方案。

答案 8 :(得分:1)

无法阻止网络用户打印您的网页。但是是的,您可以设置打印处理后要打印的内容。我的意思是简单地编写如下代码:

<!DOCTYPE html>
<html>
    <body onbeforeprint="abortPrint()">
        <p>This is my Content</p>

        <script>    
            function abortPrint()
            {
                alert("Printing is not allowed");
                document.write();
            }
        </script>
        
    </body>
</html>

这只会打印空白页,而不会打印您的内容。但只有这样,您才能阻止用户打印页面。

总是感谢您提出建议。

答案 9 :(得分:0)

如果您在用户的浏览器上呈现某些内容,它将成为用户的控制权。你无法抗拒用户打印。

如果您希望向用户显示某些信息,并且您不希望用户能够进行打印,则可以使用类似PDF的内容并防止其打印。

您的用法是什么?