Как имитировать реальное нажатие клавиши на клавиатуре в Javascript

function eng (zEvent) {
var message = document.getElementById('message-textarea').value;

function strip_tags(str) {
    str = str.toString();
    return str.replace(/</?[^>]+>/gi, '');
}
GM.xmlHttpRequest({
  method: "POST",
  url: "https://example.com/ajax/translator.php",
  data: "message = "+message,
  onload: function(response) {
  document.getElementById("message-textarea").value = strip_tags(response.responseText);
  },
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  }
});

Код, который я создал, теперь публикует текст, введенный в объект #message-textarea, меняет его язык с помощью перевода и отображает его обратно в объект #message-textarea, и этот код работает очень хорошо.

Моя проблема: На #message-textarea есть контроллер, и он понимает, что он не написан с помощью клавиатуры определенным образом, и никак не активирует кнопку отправки. Что я хочу сделать, так это напечатать входящий ответ на объект #message-textarea, как если бы он был напечатан с клавиатуры.

Попробуйте document.execCommand, пример.

wOxxOm 02.04.2023 23:05

Легкий ответ! Но этот метод устарел и не работает!

Emre Y. 02.04.2023 23:15

Он работает в Chrome, но, вероятно, в Firefox есть ошибки.

wOxxOm 03.04.2023 00:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
function simulateInput(str) {
  var textarea = document.getElementById('message-textarea');
  var value = textarea.value;
  var event = new Event('input', { bubbles: true });

  for (var i = 0; i < str.length; i++) {
    value += str.charAt(i);
    textarea.value = value;
    textarea.dispatchEvent(event);
  }
}

Использование ;

var translatedText = strip_tags(response.responseText);
  simulateInput(translatedText);

Вероятно, вы должны попробовать это:

element.focus()
element.dispatchEvent(new KeyboardEvent('keydown', {'key': 'a'}));

Другие вопросы по теме

Как заблокировать выполнение URL-адреса или файла .js для определенного сценария с использованием Greasemonkey? (сторона клиента)
Что такое параметр accessKey в GM_registerMenuCommand() и как его использовать?
Как перенаправить из нескольких возможных подпутей через пользовательский скрипт (переключить язык/скрипт Википедии)?
Пользовательский скрипт не будет расфокусировать ввод текста на некоторых страницах
Как сделать так, чтобы скрипт перенаправлял только один раз при каждой загрузке соответствующей страницы?
Почему мой обработчик кликов не применяется в скрипте Greasemonkey?
Более ресурсоемкий: скрипт Tampermonkey (для управления видео), работающий на ВСЕХ доменах — или только на 1000 доменов, каждый со своей собственной записью @include?
WaitForKeyElement.js Но с максимальным временем ожидания
Нажатие нескольких кнопок, которым нужно дождаться вызовов Ajax, прежде чем продолжить работу с Greasemonkey
Как изменить/удалить этот встроенный javascript с помощью Greasemonkey?