it-swarm.com.de

Wie erkennt man den rechten Mausklick + Einfügen mit JavaScript?

Gibt es eine Möglichkeit, einen Rechtsklick zu erkennen, gefolgt von Einfügen mit JavaScript in IE und Firefox?

Aktualisieren:

Ich entschied mich dafür, Jquery zu verwenden:

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

Es ist nicht genau das, was ich gesucht habe (weil es sowohl bei 'Strg + V' als auch bei 'Rechtsklick + Einfügen') ausgelöst wird, aber ich kann es umgehen.

Getestet auf Chrome, Firefox 3, IE 7 und IE 6 und es funktioniert

43
Rismo

Mit IE haben Sie Zeit

Mit Mozilla können Sie in Oninput Und

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

Es gibt keine einfache Lösung.

Eric

8
epascarello

Ich mag diese Lösung:

$('#txt_field').bind('input propertychange', function() {
   console.log($(this).val());
});
71
oddtwelve
$('#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
       */
    }
});
23
TabLeft

Verwenden Sie setTimeout(), setzen Sie ein kleines Timeout, bis die Funktion .val () aufgefüllt werden kann.

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

Quelle: Einfügen der Eingabe durch Einfügen

4
Malik Shahzad

Ich hatte das gleiche Problem in IE8. Chrome erlaubte mir, einen Rechtsklick-Einfügen zu erkennen, IE8 jedoch nicht.

Ich konnte das Problem mit JQUERY mit der von Aaron beschriebenen Maus verlassen-Funktion beheben, aber hier ist der Code:

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

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

Ich habe folgendes getan, das nur beim Mouseup ausgelöst wird:

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