Задать вопрос
ahmapiz
@ahmapiz
Начинающий front-end программист, html верстальщик

Как обойти свойство isTrusted:false в объекте события клавиш?

Всем привет. Как сделать полную имитацию ввода текста пользуясь только событиями , не меняя напрямую значение 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 .
  • Вопрос задан
  • 699 просмотров
Подписаться 1 Средний 9 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы