Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模拟按键事件_Javascript_Dom_Automation - Fatal编程技术网

Javascript 模拟按键事件

Javascript 模拟按键事件,javascript,dom,automation,Javascript,Dom,Automation,伙计们,这是一个很简单的问题,但我找不到好的答案。我只想在一个网页上自动执行按键1的按键事件 模拟按键事件最简单的方法是什么 有像document.keypress()这样的东西吗?您可以按如下方式操作- //设置eventListener,以便在每次按键时记录 window.addEventListener('keydown',函数(事件){ console.log('按键-',event.key); }); //创建键盘按下事件 var事件=新键盘事件('keydown'{ “键”:“1”

伙计们,这是一个很简单的问题,但我找不到好的答案。我只想在一个网页上自动执行按键1的按键事件

模拟按键事件最简单的方法是什么


有像document.keypress()这样的东西吗?

您可以按如下方式操作-

//设置eventListener,以便在每次按键时记录
window.addEventListener('keydown',函数(事件){
console.log('按键-',event.key);
});
//创建键盘按下事件
var事件=新键盘事件('keydown'{
“键”:“1”
});
//使用dispathEvent方法每1000秒调用/模拟一次事件

setInterval(()=>window.dispatchEvent(事件),1000)您可以按如下方式执行-

//设置eventListener,以便在每次按键时记录
window.addEventListener('keydown',函数(事件){
console.log('按键-',event.key);
});
//创建键盘按下事件
var事件=新键盘事件('keydown'{
“键”:“1”
});
//使用dispathEvent方法每1000秒调用/模拟一次事件

setInterval(()=>window.dispatchEvent(事件),1000)你在找这样的东西吗?您也可以用它捕获实际的键盘输入

我建议您改用keyup事件

document.addEventListener('keyup',e=>{
//用户在文本框中,请不要继续
if(['textarea','input'].includes(document.activeElement.tagName.toLowerCase())){
console.log('in textarea')
返回;
}
//用户不在“恢复导航”文本框中。
如果(e.key=='d'){
console.log('next profile')
}否则如果(e.key=='a'){
console.log('previousprofile')
}否则{
console.log('无效密钥')
}
})
设置间隔(()=>{
让evt=newkeyboardevent('keyup',{key:'d'})
文件调度事件(evt)
},2000)

你在找这样的东西吗?您也可以用它捕获实际的键盘输入

我建议您改用keyup事件

document.addEventListener('keyup',e=>{
//用户在文本框中,请不要继续
if(['textarea','input'].includes(document.activeElement.tagName.toLowerCase())){
console.log('in textarea')
返回;
}
//用户不在“恢复导航”文本框中。
如果(e.key=='d'){
console.log('next profile')
}否则如果(e.key=='a'){
console.log('previousprofile')
}否则{
console.log('无效密钥')
}
})
设置间隔(()=>{
让evt=newkeyboardevent('keyup',{key:'d'})
文件调度事件(evt)
},2000)


你可以试试这个你可以试试这个我怎样才能改为用按键来更改keydown?我想按1键而不是任何键。@OzanYılmaz也请查看这些链接以了解更多信息-,@OzanYılmaz也请阅读您对其他答案的评论,我觉得这可能不是实现您想要实现的目标的最佳方式。相反,您可以直接编写一个
setInterval
函数,并在其中写入逻辑(在您的案例中,移动到下一个概要文件)。这比模拟按键要好得多。这种模拟本身存在破坏浏览器安全性的风险,这就是为什么我不推荐这种方法的原因。我肯定会编写一个setInterval函数,但为此我需要一个回调函数,回调函数可以是鼠标单击或按键。我试着用鼠标点击,但它不起作用,所以我想我可以做按键回拨功能。到目前为止还没有什么好运气。@OzanYılmaz回调函数不应该是鼠标单击或按键。相反,编写每当按键或鼠标单击时代码执行的逻辑。正如我已经提到的,模拟这个按键并不是一个坏的做法,它带来了一个缺点,我如何用按键来改变keydown呢?我想按1键而不是任何键。@OzanYılmaz也请查看这些链接以了解更多信息-,@OzanYılmaz也请阅读您对其他答案的评论,我觉得这可能不是实现您想要实现的目标的最佳方式。相反,您可以直接编写一个
setInterval
函数,并在其中写入逻辑(在您的案例中,移动到下一个概要文件)。这比模拟按键要好得多。这种模拟本身存在破坏浏览器安全性的风险,这就是为什么我不推荐这种方法的原因。我肯定会编写一个setInterval函数,但为此我需要一个回调函数,回调函数可以是鼠标单击或按键。我试着用鼠标点击,但它不起作用,所以我想我可以做按键回拨功能。到目前为止还没有什么好运气。@OzanYılmaz回调函数不应该是鼠标单击或按键。相反,编写每当按键或鼠标单击时代码执行的逻辑。正如我已经提到的,模拟这个按键并不是一个坏的做法,而且没有文本区域,我只想每10秒按一次键1。为什么要每秒创建一个新事件,而不是只创建一次并称之为:|@Abhishek我想每次触发时你都需要一个新的“键”…而且,按键事件被贬低了。检查这个-好的,这是一个约会应用程序,我想按下像按钮或键1,做同样的事情。由于某些原因,单击事件不起作用,所以我想按1,它每10秒移动到下一个配置文件。没有文本区域,我只想每10秒按1键。为什么要每秒钟创建一个新事件,而不是只创建一次并称之为:|@Abhishek我假设每次触发时都需要一个新的“键”…还有,按键事件被折旧。检查这个-好的,这是一个约会应用程序,我想按下像按钮或键1,做同样的事情。由于某些原因,单击事件不起作用,所以我想按1,它每10秒移动到下一个配置文件。