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, как если бы он был напечатан с клавиатуры.
Легкий ответ! Но этот метод устарел и не работает!
Он работает в Chrome, но, вероятно, в Firefox есть ошибки.
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'}));
Попробуйте document.execCommand, пример.