如何在 JavaScript 中模拟按键?

新手上路,请多包涵

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

例如,当功能启动时,应按下“Arrow Down”键,使网页略微滚动。

我只对 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?

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


换句话说

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

 Down::
Send, {Up}

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

原文由 user90726 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

正如@rfsbsb 指出的那样: Jquery script for simulated key press down not running keyboard shortcut

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

原文由 Gavriel 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 这个答案,我设法稍微更改了代码,我想我得到了您要找的东西?

这是我的 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 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题