13

我找到了答案,但它是针对 JQuery 的。链接在这里:

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

:我想要一些在 chrome、最新的 firefox、safari 和 IE 8 和 9 上工作的纯 Javascript 的东西。

更新

由于所有负面评论都说这对互联网站点来说是个坏主意,我只能说“我同意”。请注意,这适用于需要覆盖剪切、复制和粘贴的“内部网”应用程序,因为需要自定义剪切复制和粘贴的默认浏览器行为以处理富文本区域中的嵌入标签

4

5 回答 5

16

当然,做这样的事情是不合适的,但这不是@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; }

重要提示:必须加载正文(当然),document.body,因为 IE 需要它(document.oncopy 只能在 chrome/firefox/safari 中工作)

于 2012-11-30T14:41:24.470 回答
3

一个好方法

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 下,例如在关闭 body 标记之前

于 2014-02-20T07:28:46.837 回答
2

编辑:将此添加到正文标签似乎适用于我所有的测试浏览器,包括 Opera、Chrome、Seamonkey(所以我假设是 Firefox)和 IE9

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

如果您想在某些地方允许某些功能而不在其他地方允许某些功能,您可以将它们放在其他标签中

于 2012-11-30T14:36:20.007 回答
1

你可以抓住一个[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.
    }
});​

工作片段

于 2012-11-30T14:25:35.077 回答
1
oncopy="return false" oncut="return false" onpaste="return false"

此代码将防止剪切、复制和粘贴网站。

工作片段

于 2017-07-15T15:21:52.083 回答