我有个奇怪的需求,平时需要在一个屏蔽了复制/黏贴的页面输入难记的命令,想要用js来模拟用户的键盘操作,如按下某个键、释放某个键或者输入文本内容,主要是为了加快或是替代重复输入。
在JavaScript中,用KeyboardEvent
对象来模拟键盘事件,再调用 dispatchEvent
方法来触发键盘事件
<!DOCTYPE html>
<html>
<body>
<div><p id="viewer">Default</p></div>
<script>
(function() {
var viewer =
document.addEventListener("keypress", function(e) {
var viewer = document.getElementById("viewer");
viewer.innerHTML += String.fromCharCode(e.code);
});
})();
function pasteText() {
var clipboard = document.getElementById("clipboard");
for (let c of clipboard.value) {
var cCode = c.charCodeAt(0);
console.log(c+": "+cCode);
var forgeEvent = new KeyboardEvent("keydown", {
keyCode: cCode
});
document.dispatchEvent(forgeEvent);
}
}
</script>
<div style="position:fixed;z-index:100;top:0px;right:0px;width:450px;">
<textarea id="clipboard" rows="15" cols="60" placeholder="输入要粘贴的内容"></textarea>
<input id="copy" type="submit" value="粘贴" onclick="pasteText()">
</div>
</body>
</html>
阿斯顿