如何在JavaScript中模拟按键?

我正试图找到一种模拟按键的方法。

例如,当启动function时,应按下“向下箭头”键,因此网页应略微滚动。

我只对Chrome感兴趣,jQuery或普通JS都适合。 (普通的JS会更优选)。

这是我尝试过的代码示例之一:

var e = $.Event("keydown", { keyCode: 40}); // 40 = down arrow $("body").trigger(e); // When I launch it the console, nothing happens. The page is not scrolled. // May be I missed some obvious? 

我搜索并发现了以下相关问题,但解决方案对我不起作用:

  • 使用jQuery触发keypress事件的明确方法
  • 在JavaScript中触发键盘事件
  • 如何在JavaScript中触发事件?
  • 使用javascript模拟左右箭头键事件
  • 使用jQuery模拟Keypress
  • 从Javascript控制台模拟Keypress事件
  • 模拟JavaScript关键事件

换一种说法

使用AutoHotkey,您可以轻松地制作以下内容:

 Down:: Send, {Up} 

然后,如果按Down箭头键,它将被触发Up 。 我只想用JS实现它。

正如@rfsbsb指出: 用于模拟按键的Jquery脚本按下没有运行键盘快捷键

如果你试图触发一些浏览器或系统范围的键盘快捷方式,那么这是一个死胡同 – 出于安全原因,它无法完成。 如果可能的话,你会在互联网上有一些页面(例如)将它们自己添加到你的书签中,甚至不用询问(通过使用Javascript触发CTRL + B快捷键)。

使用这个答案 ,我设法改变了一些代码,我想我得到了你想要的东西?

这是我的jsfiddle

码:

 jQuery(document).ready(function($) { $('body').keypress(function(e) { if(e.which == '40') $('body').animate({scrollTop: '100px'}); }); }); jQuery.fn.simulateKeyPress = function(character) { jQuery(this).trigger({ type: 'keypress', which: character }); }; setTimeout(function() { $('body').simulateKeyPress(40); }, 1000); 

以下是从@ Haring10的示例开始的示例:

https://jsfiddle.net/po33vfb4/4/

 $('body').keydown(function(e) { e.preventDefault(); e.stopImmediatePropagation(); if(e.which == 40) { window.scrollBy(0, -100); } else { window.scrollBy(0, 100); } }); 

以编程方式触发keydown-keyup-keypress似乎没有滚动的效果。 可以自定义上面的示例以添加动画。