Нажатие клавиши initKeyEvent работает только в FireFox.нужно кросс-браузерное решение! - PullRequest
5 голосов
/ 20 июня 2011

Это мой код:

<script>
function f(){
var i=document.getElementById("i");
i.focus();
 var evt = document.createEvent("KeyboardEvent");
    evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 

0, 32);
    i.dispatchEvent(evt);
}
</script>
<body onload="f();">
<input id="i"/>
</body>

Откройте скрипт в Firefox, и он работает.Пустое пространство внутри поля ввода показывает, что код сработал.

Однако приведенный выше фрагмент кода не работает в Chrome, Safari, Opera и т. Д.код выше, чтобы заставить его работать в этих браузерах?

Ответы [ 2 ]

6 голосов
/ 13 декабря 2011

Для браузеров на основе Webkit (Safari / Chrome) вызов инициализации события должен выглядеть немного иначе (см. https://bugs.webkit.org/show_bug.cgi?id=13368):

initKeyboardEvent(in DOMString typeArg, 
                  in boolean canBubbleArg, 
                  in boolean cancelableArg, 
                  in views::AbstractView viewArg, 
                  in DOMString keyIdentifierArg, 
                  in unsigned long keyLocationArg, 
                  in boolean ctrlKeyArg, 
                  in boolean shiftKeyArg, 
                  in boolean altKeyArg, 
                  in boolean metaKeyArg, 
                  in boolean altGraphKeyArg);
4 голосов
/ 24 декабря 2012

Чтобы добавить к ответу Александра:

Существует ошибка webkit, из-за которой события клавиатуры, инициализированные с помощью initKeyboardEvent, получают неверный keyCode и charCode, равный 0: https://bugs.webkit.org/show_bug.cgi?id=16735

.опубликовано в этот SO ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...