2014-09-16 35 views
7

Próbuję wykryć, kiedy użytkownik naciśnie Ctrl + V w JavaScript.Jak wykryć CTRL-V w JavaScript dla IE i firefox

jQuery(document).on('paste', function() {alert('text pasted!')}) 

Działa dobrze z Chrome (v37). Ale to nie działa z Firefoksem (V32) i IE (v11), jak można spróbować na tej jsfiddle:

http://jsfiddle.net/7N6Xq/410/

Każdy pomysł co robię źle?

EDYCJA - 2014-09-17 - potrzeba zawartości schowka.

Nie mogę po prostu polegać na wykrywaniu kluczy, ponieważ potrzebuję zawartości schowka, która jest dostępna tylko przez wklejanie (nie ma czystej innej metody dostępu do niej). W tym JSFiddle, pojawia się zdarzenie i wyświetlanie tekstu (działa tylko na Chrome)

http://jsfiddle.net/7N6Xq/412/

Moim ostatecznym celem jest, aby uzyskać obraz ze schowka i wysłać go bezpośrednio do serwera.

+1

powinny być w stanie uzyskać odpowiedzi z połączenia tych dwóch wątków: http://stackoverflow.com/questions/10671822/jquery- obsługa kombinacji klawiszy (wykrywanie klawisza "Ctrl") i http://stackoverflow.com/questions/10655202/detect-multiple-keys-on-single-keypress-event-on-jquery (wykrywanie kombinacji klawiszy) – talemyn

+1

[ pułapka na myszy] (http://craig.is/killing/mice) działa dobrze, jeśli chcesz tylko użyć małej biblioteki. – royhowie

Odpowiedz

2

Nie można po prostu wkleić wyświetlanego tekstu. Musisz utworzyć obszar wprowadzania, w którym mogą wkleić, <input> lub <textarea> lub podobny. Odziedziczy ona obsługę onpaste, więc nie musisz jej ustawiać bezpośrednio na elemencie wejściowym, ale nie będzie ona uruchamiana poza jednym w większości przeglądarek.

See skrzypce tutaj: http://jsfiddle.net/Lznvm8x9/

Jestem na Mac, więc nie mogę przetestować IE, ale powyższe prace w Firefox, jak i Safari i Opera.

Jeśli chcesz wykryć V jako akord kluczowy niezależnie od rzeczywistej funkcji wklejania, możesz użyć zdarzeń keydown/keyup, ale wtedy natrafisz na problemy z wieloma platformami - czy nadal chcesz kontrolować? V na komputerze Mac, gdzie wklej jest zwykle polecenia-V, itp.

2

Użyj keydown i keyup + kody dla kluczy zamiast rzeczywistego podejścia.

+0

Ale to nie daje wklejonej treści przez wydarzenie. Pytanie powinno być sformułowane inaczej, wyświetlając tekst schowka w alarmie. –

6

To jest moja JSFIDDLE. To działa dobrze na Chrom & Firefox & IE10 Oto kod:

$(document).keydown(function (event) { 
    if (event.ctrlKey && event.keyCode == 86) { 
     alert("!"); 
    } 
}); 
+0

Ale to nie daje wklejonej treści przez wydarzenie. Pytanie powinno być sformułowane inaczej, wyświetlając tekst schowka w alarmie. –

+0

@JohnRizzo Soryy, nie mogę Cię śledzić. Czy masz na myśli to, że istnieje coś innego niż wydarzenie 'paste' i wydarzenie' keydown'? –

+0

Tak. Ze względów bezpieczeństwa nie można zainicjować odczytu schowka użytkownika z JavaScript. Jedyne, co możemy zrobić, to czekać na użytkownika, aby zainicjować wklejanie zdarzenia (na przykład z Ctrl + V) i uzyskać dostęp do schowka przez to wydarzenie. –

Powiązane problemy