如何使用JavaScript检测Ctrl+V,Ctrl+C?

2022-08-30 01:27:11

如何使用 JavaScript 检测 +, + ?CtrlVCtrlC

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

我怎样才能做到这一点?


答案 1

我只是出于兴趣而这样做。我同意这不是正确的做法,但我认为这应该是op的决定......此外,代码可以很容易地扩展以添加功能,而不是将其删除(例如更高级的剪贴板,或+触发服务器端保存)。Ctrls

$(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库。

编解码器演示

编辑:由于Tim Down的建议,删除了3个多余的行(涉及e.that)(请参阅评论)

编辑:增加了对Mac的支持(键而不是cmdctrl)


答案 2

使用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/