跨浏览器方法,用于防止从文本区域复制所有文本的方法

Cross-browser method to prevent all methods of text copying from a textarea?

本文关键字:文本 方法 区域 复制 浏览器 用于      更新时间:2023-09-26

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

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

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

你可以做这样的事情:

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

但即便如此,用户也可以按照您的问题中的建议通过其他方式复制内容。

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

绑定事件处理程序并防止剪贴板函数如下所示:

$('textarea').on('copy paste cut drag drop', function (e) {
   e.preventDefault();
});
相关文章: