如何为 JavaScript 中的字母数组发送按键
How to send keypresses for an array of letters in JavaScript
我正在尝试想出一个解决方案,通过虚拟按键进行打字测试。我想要的是获取文本并将单个字母存储在数组中,然后在每次按下之间有一些延迟按下所有键。
这是文本布局的HTML。假设它有 hello
.
这个词
<div class="digit-container">
<div>
<span>h</span>
</div>
</div>
<div class="digit-container">
<div>
<span>e</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>o</span>
</div>
</div>
这是我想出的 JavaScript 代码。我已经设法将这些字母存储在一个数组中。
wordList = document.querySelectorAll(".digit-container > div > span");
wordArray = [];
for (let i = 0; i < wordList.length; i++) {
individualWord = wordList[i].innerHTML;
wordArray.push(individualWord);
}
现在我想 JavaScript 发送此字母数组 { "h", "e", "l", "l", "o" } 的按键。基本上,当我粘贴此代码并在控制台中按回车键时,我希望 JavaScript 按下“Hello”,两次击键之间有几毫秒的延迟。如何让 JavaScript 进入按键?
这是解决方案。
const elements = document.querySelectorAll(".digit-container > div > span");
const chars = Array.from(elements).map((item) => item.textContent);
const delay = 1000;
let i = 0;
const pressKey = () => {
setTimeout(() => {
const char = chars[i];
const event = new KeyboardEvent("keyup", {
key: char
});
document.body.dispatchEvent(event);
if (i !== chars.length - 1) {
i++;
pressKey();
}
}, delay);
};
pressKey();
document.body.addEventListener("keyup", (e) => {
console.log(e.key);
});
<div class="digit-container">
<div>
<span>h</span>
</div>
</div>
<div class="digit-container">
<div>
<span>e</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>o</span>
</div>
</div>
我正在尝试想出一个解决方案,通过虚拟按键进行打字测试。我想要的是获取文本并将单个字母存储在数组中,然后在每次按下之间有一些延迟按下所有键。
这是文本布局的HTML。假设它有 hello
.
<div class="digit-container">
<div>
<span>h</span>
</div>
</div>
<div class="digit-container">
<div>
<span>e</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>o</span>
</div>
</div>
这是我想出的 JavaScript 代码。我已经设法将这些字母存储在一个数组中。
wordList = document.querySelectorAll(".digit-container > div > span");
wordArray = [];
for (let i = 0; i < wordList.length; i++) {
individualWord = wordList[i].innerHTML;
wordArray.push(individualWord);
}
现在我想 JavaScript 发送此字母数组 { "h", "e", "l", "l", "o" } 的按键。基本上,当我粘贴此代码并在控制台中按回车键时,我希望 JavaScript 按下“Hello”,两次击键之间有几毫秒的延迟。如何让 JavaScript 进入按键?
这是解决方案。
const elements = document.querySelectorAll(".digit-container > div > span");
const chars = Array.from(elements).map((item) => item.textContent);
const delay = 1000;
let i = 0;
const pressKey = () => {
setTimeout(() => {
const char = chars[i];
const event = new KeyboardEvent("keyup", {
key: char
});
document.body.dispatchEvent(event);
if (i !== chars.length - 1) {
i++;
pressKey();
}
}, delay);
};
pressKey();
document.body.addEventListener("keyup", (e) => {
console.log(e.key);
});
<div class="digit-container">
<div>
<span>h</span>
</div>
</div>
<div class="digit-container">
<div>
<span>e</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>l</span>
</div>
</div>
<div class="digit-container">
<div>
<span>o</span>
</div>
</div>