如何使用 JavaScript 检测 Ctrl V、Ctrl C?

新手上路,请多包涵

如何使用 JavaScript 检测 ---0--- + ---1------2--- + ---3---

我需要限制在我的 textarea 中粘贴,最终用户不应复制和粘贴内容,用户只能在 textarea 中键入文本。

我怎样才能做到这一点?

原文由 Ramakrishnan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我只是出于兴趣才这样做。我同意这不是正确的做法,但我认为这应该是操作人员的决定……此外,代码可以轻松扩展以添加功能,而不是将其删除(如更高级的剪贴板或 Ctrl + s 触发服务器端保存)。

 $(document).ready(function() {
 var ctrlDown = false,
 ctrlKey = 17,
 cmdKey = 91,
 vKey = 86,
 cKey = 67;

 $(document).keydown(function(e) {
 if (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = true;
 }).keyup(function(e) {
 if (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = false;
 });

 $(".no-copy-paste").keydown(function(e) {
 if (ctrlDown && (e.keyCode == vKey || e.keyCode == cKey)) return false;
 });

 // Document Ctrl + C/V
 $(document).keydown(function(e) {
 if (ctrlDown && (e.keyCode == cKey)) console.log("Document catch Ctrl+C");
 if (ctrlDown && (e.keyCode == vKey)) console.log("Document catch Ctrl+V");
 });
 });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <h3>Ctrl+c Ctrl+v disabled</h3>
 <textarea class="no-copy-paste"></textarea>
 <br><br>
 <h3>Ctrl+c Ctrl+v allowed</h3>
 <textarea></textarea>

还要澄清一下,这个脚本需要 jQuery 库。

Codepen 演示

编辑:由于 Tim Down 的建议,删除了 3 条多余的行(涉及 e.which)(见评论)

编辑:添加了对 Mac 的支持( cmd 键而不是 ctrl

原文由 jackocnr 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 jquery,您可以通过绑定函数轻松检测复制、粘贴等:

 $("#textA").bind('copy', function() {
    $('span').text('copy behaviour detected!')
});
$("#textA").bind('paste', function() {
    $('span').text('paste behaviour detected!')
});
$("#textA").bind('cut', function() {
    $('span').text('cut behaviour detected!')
});

更多信息在这里: http ://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/

原文由 Chris Andersson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题