我正在开发一个项目,我需要拦截正在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。
答案 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')