簡體   English   中英

是否有一種跨瀏覽器的方式來防止在普通Javascript網站上剪切,復制和粘貼?

[英]Is there a cross browser way to prevent cut, copy and paste on a website in plain Javascript?

我找到了答案,但它適用於JQuery。 鏈接在這里:

http://jquerybyexample.blogspot.com/2010/12/disable-cut-copy-and-paste-function-for.html

:我想要一些簡單的Javascript工作在chrome,最新的Firefox,Safari和IE 8和9。

更新

由於所有負面評論都說這對於互聯網網站來說是個壞主意我只能說“我同意”。 請注意,這適用於需要覆蓋剪切,復制和粘貼的“Intranet”應用程序,因為需要自定義剪切復制和粘貼的默認瀏覽器行為以處理富文本區域中的嵌入式標記

當然做這樣的事情是不合適的,但這不是@Zubairs的問題,所以我認為在這里投票不正確,因為他明確指出了這一點。

現在問的問題是:如果jQuery可以做到這一點,原生的javascript當然也可以做到。

你必須防止剪切,復制和粘貼事件:

document.body.oncopy = function() { return false; }
document.body.oncut = function() { return false; }
document.body.onpaste = function() { return false; }

這可以防止右鍵單擊上下文菜單,如果您使用其他3個事件處理程序,但只是為了讓您知道,則不需要這樣做;-)

document.body.oncontextmenu = function() { return false; }

重要提示:必須加載body(當然),document.body,因為IE需要它(document.oncopy只能在chrome / firefox / safari中使用)

編輯:添加到body標簽似乎適用於我的所有測試瀏覽器,包括Opera,Chrome,Seamonkey(所以我假設Firefox)和IE9

<body oncopy='return false' oncut='return false' onpaste='return false'>

如果你想在某些地方而不是在其他地方允許某些功能,你可以將它們放在其他標簽中

一個好方法

var D=document.getElementById('b4');

if(D.addEventListener){
D.addEventListener('paste',function(e){false;e.preventDefault();},false);}
else{
D.attachEvent('onpaste',function(){return false;});}

警告 :代碼必須在html target / s下,例如在close body標簽之前

您可以按[Ctrl]+[C]按鍵:

addEventListener("keydown", function(e){
    evt = (e) ? e : window.event; // Some cross-browser compatibility.
    if(evt.ctrlKey && evt.which == 67){ // [x] == 88; [c] == 67; [v] == 86;
        console.log("Ctrl+C pressed!");
        evt.preventDefault(); // Cancel the copy-ing function for the client.
        // Manual Copy / Paste / Cut code here.
    }
});​

工作片段

oncopy="return false" oncut="return false" onpaste="return false"

此代碼將阻止網站的剪切,復制和粘貼。

工作片段

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM