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

标签 javascript jquery html

如何使用JavaScript检测Ctrl+VCtrl+C

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

我怎样才能做到这一点?

最佳答案

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

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

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

关于javascript - 如何使用 JavaScript 检测 Ctrl+V、Ctrl+C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903991/

相关文章:

javascript - 计算器 - 第一个计算结果显示,但第二个计算结果不显示

javascript - JSON 输出未正确显示,javascript

javascript - Electron 项目中的 Mocha 测试。为什么需要巴别塔?

html - 在导航栏标题中扩展搜索输入

css - 为什么在具有居中元素的同一容器中元素需要在左前 float ?

javascript - 如何从已知标记列表中标记字符串?

jquery - 如何使用 jquery.noConflict 属性

javascript - jQuery 选项卡插件在嵌套超链接时创建额外的 anchor 标记

javascript - 单击时旋转 Font Awesome 图标

javascript - 视频播放完后添加一个 div 来替换视频