Javascript 跨浏览器方法,以防止从textarea复制所有文本方法?

Javascript 跨浏览器方法,以防止从textarea复制所有文本方法?,javascript,jquery,textarea,clipboard,copy-paste,Javascript,Jquery,Textarea,Clipboard,Copy Paste,我正在开发一个在线打字软件。在打字软件中,一切都进行得很顺利,但我遇到了一个问题:不诚实的用户可能会在文本区域中键入文本,复制文本,然后重新加载页面(因此重置计时器)并立即粘贴。所以我考虑使用类似于evt.preventDefault()的东西当javascript检测到按下ctrl/cmd按钮和C键时。但后来我意识到,用户总是可以在菜单栏上按Edit->Copy。所以我想知道,是否有一种跨浏览器方法可以禁用这两种复制方法?您可以尝试使用以下jQuery代码: $('input[type=tex

我正在开发一个在线打字软件。在打字软件中,一切都进行得很顺利,但我遇到了一个问题:不诚实的用户可能会在文本区域中键入文本,复制文本,然后重新加载页面(因此重置计时器)并立即粘贴。所以我考虑使用类似于
evt.preventDefault()的东西当javascript检测到按下ctrl/cmd按钮和
C
键时。但后来我意识到,用户总是可以在菜单栏上按
Edit->Copy
。所以我想知道,是否有一种跨浏览器方法可以禁用这两种复制方法?

您可以尝试使用以下jQuery代码:

$('input[type=text],textarea').bind('copy paste cut drag drop', function (e) {
   e.preventDefault();
});

您可以阻止某些事件,但无法阻止此类用户行为。用户始终可以通过浏览器控制台从DOM节点复制文本。

您可以执行以下操作:

var txtArea = document.getElementById("YourTextAreaId");
txtArea.oncopy = function() { return false; } 
txtArea.onpaste = function() { return false; } 
txtArea.oncut = function() { return false; } 

但即使如此,用户也可以通过其他方式复制内容,正如您在问题中所建议的那样。

绑定事件处理程序并阻止剪贴板功能,如:

$('textarea').on('copy paste cut drag drop', function (e) {
   e.preventDefault();
});

是的,因为每个人都知道如何启动控制台并开始操作domOh DOM操作不是问题,我的意思是如果用户不了解DOM操作,只知道编辑->复制和右键单击->复制(右键单击不是问题)还有CTRL-C和CMD-C。这是我主要担心的。@think123如果从剪切/粘贴/复制事件到我的DOM操作中
preventDefault()
,这是不起作用的,因为我已经得到了用户需要在PHP GD图像中键入的内容,所以我不担心这一点。请问,绑定是什么(“复制粘贴剪切”部分的代码是什么?谢谢!绑定函数将事件处理程序附加到元素。“复制粘贴剪切”告诉我们,哪些事件应该触发附加的函数。@think123它是(一个javascript库)…在这里你可以看到它是如何工作的:这个解决方案是跨浏览器的吗?这里是jquery浏览器兼容性的参考@think123:我为你之前删除的问题提供了一个解决方案(为什么我的php mysql代码只显示一个td)哦,这个问题已经解决了(我想)。很抱歉。请记住,您所做的任何操作都不会阻止人们在其浏览器中阻止剪贴板事件。例如,在Firefox中,我们只需转到
about:config
,搜索
dom.event.clipboardevents.enabled
,并将其设置为
false
@Downvoter,我的答案有什么问题吗?请解释,以便我能找到答案n改进它。