Всем привет. Как сделать полную имитацию ввода текста пользуясь только событиями , не меняя напрямую значение el.value ?
Пробую запускать
el.dispatchEvent(new KeyboardEvent('keydown', {'key':'h'}));
безуспешно. Так же думал может нужно запускать весь цикл событий клавиатуры и попробовал след код :
el.dispatchEvent(new KeyboardEvent('keydown', {'key':'h'}));
el.dispatchEvent(new KeyboardEvent('keypress', {'key':'h'}));
el.dispatchEvent(new InputEvent('beforeinput', {data:'k',inputType: "insertText", bubbles: true, cancelable: true, composed: true, isTrusted: true}));
el.dispatchEvent(new KeyboardEvent('keyup', {'key':'h'}));
что тоже оказалось безуспешным. Знаю что цикл не полный , но дальше писать я не стал , когда нактнулся на свойство isTrusted . Оказывается из-за него событие происходит, но значение текстового поля не меняется . Везде почитал, попробовал библиотеки , но все усилия оказались тщетны.
Есть возможность дать дебагеру команду, чтоб при возникновении события клика клавиатуры , он добавлял это событие в доверенные и прописывал ему isTrusted:true , но не могу понять как . Офиц документация на английском (я его не знаю) и описывает какие-то правила для расширений.
На одном форуме увидел , что это делается следующим образом
chrome.debugger.attach(target, "1.2", function() {
chrome.debugger.sendCommand(target, "Input.dispatchMouseEvent", arguments)
})
Пробовал сделать у себя так же , но
1 не понятно что передавать в аргументы (таргет - текущее окно, это понятно , дальше версия , а все остальное загадка)
2 у меня даже нет свойства chrome.debugger.
Если кто-то запутался , цель - сымитировать ввод с клавиатуры и заполнить значение инпута, не меняя el.valuе напрямую. Не получается из-за свойства isTrusted:false .