2013-05-17 7 views
5

Próbuję utworzyć rozszerzenie chrome, które modyfikuje tekst w aktywnym obszarze tekstowym okna czatu na Facebooku. Ale chcę, aby zmiana miała miejsce tylko wtedy, gdy użytkownik naciśnie klawisz Enter, aby tekst nie zmienił się, gdy jest jeszcze w obszarze tekstowym. Chcę, aby to się stało przy użyciu javascript i sprawiają, że czuje się tak, jakby działo się w tle, chociaż chcę, aby został wywołany na keydown klucz enter.Jak powiązać wiele działań z wydarzeniem na klawiaturze

Teraz istotne JavaScript w oknie czatu w textarea w Facebook jest:

<textarea class="blah" 
onkeydown="window.Bootloader && Bootloader.loadComponents(["control-textarea"], 
function() { TextAreaControl.getInstance(this) }.bind(this)); "> 
</textarea> 

A moje rozszerzenie pliku w JavaScript. Wiążę keydown zdarzeń przy użyciu coś takiego:

//elem is bound to the focussed textarea object 
elem.onkeydown = function(evt) { 
       if(evt.keyCode == 13){ 
       //Some javascript code I want to execute here... 
       } 
     }; 

myślę, gdy tylko użytkownik naciśnie wprowadzić klawisza textarea jest wyczyszczone i jakieś żądania POST jest wykonany. Tak więc tracę zakres tekstu, który chciałem zmodyfikować za pomocą JavaScript. Sprawdziłem, czy powiązanie klawisza Enter działa dla mojego rozszerzenia, naciskając przesunięcie + wprowadź i zmodyfikowało tekst bez problemu. Mój skrypt działa dobrze.

Jednak chcę, aby mój skrypt został wykonany zanim tekst zostanie wyczyszczony i zostanie wysłane żądanie pocztowe. Po prostu nie chcę, aby użytkownik widział, jak zmienia się tekst.

Czy mogę dodać/zmodyfikować keybinding z textarea używanego przez Facebooka, jak pokazano powyżej w moim skrypcie dla rozszerzenia google chrome? Każda pomoc jest głęboko doceniana.

+0

Czy ktoś może mi w tym pomóc? – Annihilator8080

+2

Znaleziono odpowiedź [tutaj] (http://stackoverflow.com/questions/13880126/override-isting -onkeydown-function) !! – maxisme

Odpowiedz

2

Istnieje milion duplikaty to pytanie tutaj, ale tu idzie znowu w każdym razie:

Można użyć target.addEventListener (typ, słuchacza [, użyj przechwytu]); W twoim przypadku, to byłoby

document.addEventListner(keypress, function(event) { //You can use keydown too 
    if (event.which === 13) { // Value for Enter key if keydown or keyup used, use event.keyCode 
    //some code that you want to add 
    } 
} 

Jeśli używasz jQuery, można użyć

$(document).keypress(function(event){ 
if (event.which === 13) { 
    // Your code here 
} 
}); 

PS: - W przypadku dodawania obsługi crossbrowser, powinieneś użyć czegoś takiego: -

if (target.addEventListener) { 
    target.addEventListener('keypress',myFunction,false); 
} 
else if(target.attachEvent) { 
    target.attachEvent('onkeypress', myFunction, false); 
} else { 
    target.onkeypress = myFunction; 
} 
// Here myFunction is the callback where you would check for the character code and your custom code 
Powiązane problemy