javascript - 使用 javascript 以编程方式在网页上按键
问题描述
尝试使用以下代码段创建 keydown 事件。keypress 函数触发,但该值未添加到文本框中。我想使用键编辑文本框 1 的值。
fyi - 故意避免直接设置 element.value
<html>
<head>
<script>
function f1() {
document.querySelector("#text1").focus()
document.querySelector("#text1").onkeydown = test;
var keypress = new KeyboardEvent("keydown", {
key: "e",
keyCode: 69, // example values.
code: "KeyE", // put everything you need in this object.
which: 69,
shiftKey: false, // you don't need to include values
ctrlKey: false, // if you aren't going to use them.
metaKey: false // these are here for example's sake.
})
console.log("srcElement" + keypress.srcElement);
console.log("currentTarget" + keypress.currentTarget);
var element = document.getElementById("text1")
element.dispatchEvent(keypress);
console.log("srcElement" + keypress.srcElement);
console.log("currentTarget" + keypress.currentTarget);
}
function test(e) {
console.log("Called" + e.key);
console.log("Called" + e.keyCode);
}
</script>
</head>
<body onload="f1()">
<form>
Input 1 : <input type="text" id="text1" name="text1" />
Input 2 :<input type="text" id="text2" name="text2" />
</form>
</body>
</html>
这是控制台上的输出:
test.html:17 srcElementnull
test.html:18 currentTargetnull
test.html:25 Callede
test.html:26 Called69
test.html:21 srcElement[object HTMLInputElement]
test.html:22 currentTargetnull
解决方案
如果我很好地理解了这个问题,我认为您可以这样做:
document.addEventListener('keypress', (evt) => {
console.log(`code = ${evt.keyCode}`);
});
var keyboardEvent = new KeyboardEvent('keypress', {bubbles:true, 'keyCode': 48});
document.dispatchEvent(keyboardEvent);
但是您不能将keyboardEvent 用于您的目的。来自此答案中的@ zero298 :
注意:手动触发事件不会生成与该事件关联的默认操作。例如,手动触发键事件不会导致该字母出现在焦点文本输入中。对于 UI 事件,出于安全原因,这很重要,因为它可以防止脚本模拟与浏览器本身交互的用户操作。
推荐阅读
- windows - 在 Windows 10 启动时杀死进程的批处理脚本
- python - 当递归发生时,为什么这个列表会变成 NoneType?
- python - Plotting by ignoring missing data in matplotlib
- javascript - Javascript/HTML - 使用 onclick 重复功能
- javascript - '没有创建 Firebase 应用程序'[DEFAULT]''即使调用了 initializeApp
- heroku - 如何在 Heroku 中安装 FFMPEG 并使用它?
- java - 警告:找不到 JAXBContext 实现。WADL 功能被禁用
- python-3.x - 在 Python 中使用 enumerate 函数最小化代码
- python - 我正在尝试制作一个搜索维基百科的不和谐机器人
- c# - 将数据类型 int 转换为 tinyint 时出错