如何检测鼠标右键点击并粘贴使用JavaScript?

有没有办法检测到右键点击,然后在IE和Firefox上粘贴JavaScript?

更新:

我决定用Jquery来做到这一点:

$('#controlId').bind('paste', null, function() { // code }); 

这不正是我所期待的(因为它被'ctrl + v'以及'右键点击+粘贴'被解雇,但我可以解决它。

在Chrome,Firefox 3,IE 7和IE 6上testing过,并且正在运行

用IE浏览器,你有onpaste

有了Mozilla,你可以看看input和

 elementReference.addEventListener("DOMCharacterDataModified", function(e){ foo(e);}, false); 

没有简单的饼图解决scheme。

埃里克

我喜欢这个解决scheme:

 $('#txt_field').bind('input propertychange', function() { console.log($(this).val()); }); 
 $('#controlId').bind('paste', null, function(e) { if(!e.keyCode){ /* since no key was down at the time of the event we can assume it was from the toolbar or right click menu, and not a ctrl+v */ } }); 

使用setTimeout() ,设置小超时值直到.val()func可以被填充。

 $(document).on('paste blur keyup', '#controlId', function(event) { var element = $(event.target); setTimeout(function() { var text = $(element).val(); // do something with text }, 100); }); 

来源: 赶上粘贴input

我在IE8有同样的问题。 Chrome允许我识别右键点击粘贴,但IE8不是。

我能够使用Aaron所描述的鼠标离开function来解决JQUERY的问题,但是这是代码:

 for IE8: $( "#field" ).mouseleave(function() { doStuff()); }); for Chrome: $('#field').bind('input',function() { doStuff(); }); 

我做了以下只有在mouseup上触发:

 onmouseup="jQuery(this).on('paste',function(event){setTimeout(function(){alert('Paste detected!');},100);});" 

一个便宜的黑客(工程),你可以尝试是:

  • jQuery的mouseleave函数

我注意到IE8,如果你右键单击文本框,然后select“粘贴”,它会延迟“mouseleave”事件,直到粘贴完成。 所以它一直在粘贴后立即启动! :)为我工作,实际上让我摆脱麻烦。

这只适用于内联网应用程序,我没有在Firefox等进行testing

干杯