2010-06-20 176 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