如何使用 JavaScript 检测鼠标右键单击 + 粘贴?

IT技术 javascript jquery
2021-01-31 23:55:38

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

更新:

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

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

这不是我想要的(因为它在“ctrl + v”以及“右键单击+粘贴”中被触发,但我可以解决它。

在 Chrome、Firefox 3、IE 7 和 IE 6 上测试它并且它正在工作

6个回答

我喜欢这个解决方案:

$('#txt_field').bind('input propertychange', function() {
   console.log($(this).val());
});
我很好奇哪个绑定做了什么,但最后我只需要“输入”来捕捉键盘输入、键盘粘贴和鼠标粘贴事件。
2021-03-15 23:55:38
这是一个很棒的解决方案
2021-03-16 23:55:38
惊人的!你是怎么想出来的?
2021-03-17 23:55:38
只是让人们知道,这在切割和粘贴时都会发生。
2021-04-12 23:55:38
$('#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
       */
    }
});
Quirksmode 说这是一个非常可靠的解决方案:quirksmode.org/dom/events/cutcopypaste.html
2021-04-01 23:55:38

使用 IE,您可以使用 onpaste

使用 Mozilla,您可以查看 oninput 和

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

没有简单的馅饼解决方案。

埃里克

你能提供一个 IE 和 Firefox 的完整示例吗?谢谢你。另外,Chrome 和 Safari 怎么样?
2021-03-18 23:55:38

使用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);
});

来源:捕捉粘贴输入

我在 IE8 中遇到了同样的问题。Chrome 允许我识别右键单击粘贴,但 IE8 不能。

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

for IE8:
    $( "#field" ).mouseleave(function() {
                doStuff());
            });

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