Chcę symulować zdarzenia keydown na danym elemencie textarea na stronie html. Ponieważ używam chrome, nazwałem zmienną initKeyboardEvent
i przekazałem kod keyCode, który chcę wpisać w textarea. Oto, co starałem:Symulacja Keydown w Chrome wystrzeliwuje normalnie, ale nie jest to właściwy klucz.
var keyEvent = document.createEvent('KeyboardEvent');
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
inputNode.dispatchEvent(keyEvent);
W tym kodzie piszę list m
jednak textarea jest uzyskanie tylko keyCode 13
która jest kluczem Enter
. Tak, próbowałem kodu nadpisywania widziałem w internecie, który ustawia wartość keyCodeVal, ale bez powodzenia
var keyEvent = document.createEvent('KeyboardEvent');
Object.defineProperty(keyEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
keyEvent.keyCodeVal = 77;
inputNode.dispatchEvent(keyEvent);
Czy ktoś ma pomysł jak ustawić wartość keyCode?
Uwaga: ręczne wystrzeliwanie zdarzenia nie generuje domyślnej akcji związanej z tym zdarzeniem. Na przykład ręczne wystrzeliwanie zdarzenia klucza nie powoduje, że ta litera będzie wyświetlana w ustawieniach tekstu skupionego. W przypadku zdarzeń interfejsu użytkownika jest to ważne ze względów bezpieczeństwa, ponieważ uniemożliwia skryptom symulowanie działań użytkowników, które wchodzą w interakcję z samą przeglądarką. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent –
** EDYTOWANA **: Rozwiązanie Orwellophile działa. Sprawdź to demo, aby zobaczyć je w akcji + ogólne wydarzenie alternatywne: http://jsbin.com/awenaq/4 –