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对象中输入的文本,使用translate更改其语言,并将其反射回#message-textarea对象,这段代码运行得非常好。
我的问题是:在#message-textarea上有一个控制器,它知道它不是用键盘以某种方式编写的,也没有以任何方式激活提交按钮。我想要做的是将传入的响应打印到#message-textarea对象,就好像它是用键盘键入的一样。
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'}));