在div上拦截粘贴操作仅在右键单击后有效

时间:2017-05-16 00:10:50

标签: javascript jquery html

我正在开发一个项目,我需要拦截正在div上执行的粘贴操作(必须是div,不能是文本框)。现在我在div有焦点后绑定事件(你已经点击了div):

$('#result').unbind().click(function () {
    $(this).focus();
    $('#result').unbind().on('paste', function () {
        console.log('paste behaviour detected!');
    });
}); //NOTE: I have also tried. result.bind, result.unbind.bind, onpast="function()" 
    //(in the HTML), and a couple of other things. 

我也试过改变班级的流程(没有改变)。

还有一件事。我正在使用chrome / opera来开发。当我在Firefox上测试它时它工作得很好。有什么我可以尝试解决这个问题,还是偶然发现了一个错误?

注意:为了简单起见,我将遗漏有关项目的信息,但如果您需要更多上下文,我可以提供。

编辑:我正在粘贴到div中,因此没有右键单击>粘贴按钮。这只是使用ctrl + v。

1 个答案:

答案 0 :(得分:1)

您也可以检测ctrl / cmd + v键的组合:

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

    $(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;
        }
    });

    $(document).keydown(function(e) {
        if (ctrlDown && e.keyCode == vKey) { 
                alert('PASTE DETECTED');
            }
        });
    });
});

https://jsfiddle.net/ufskbo0a/1/

您可以在大多数浏览器中使用clipboardData api来获取数据: window.clipboardData.getData('Text')

http://caniuse.com/#search=clipboardData