小编典典

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

all

如何使用 Javascript检测ctrl+ vctrl+ ?c

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

如何做到这一点?


阅读 153

收藏
2022-07-08

共1个答案

小编典典

我只是出于兴趣才这样做。我同意这不是正确的做法,但我认为这应该是操作人员的决定......而且代码可以很容易地扩展以添加功能,而不是把它拿走(比如更高级的剪贴板,或者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

2022-07-08