首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaScript中模拟按键?

如何在JavaScript中模拟按键?
EN

Stack Overflow用户
提问于 2016-02-02 09:48:39
回答 3查看 27.9K关注 0票数 22

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

例如,当功能启动时,应该按下“向下箭头”键,因此应该稍微滚动网页。

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

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

代码语言:javascript
运行
复制
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,您可以轻松地完成以下操作:

代码语言:javascript
运行
复制
Down::
Send, {Up}

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-07 03:59:56

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

如果你试图触发某个浏览器或系统范围的键盘快捷键,那么这是个死胡同--出于安全原因,这是不可能的。如果可能的话,你会在互联网上到处都有页面,这些页面甚至不需要询问就会自动添加到你的书签中(通过使用Javascript触发CTRL+B快捷方式)。

票数 10
EN

Stack Overflow用户

发布于 2016-02-04 18:03:04

使用this answer,我设法更改了一点代码,我想我得到了你想要的东西?

here is my jsfiddle

代码:

代码语言:javascript
运行
复制
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);
票数 5
EN

Stack Overflow用户

发布于 2016-02-11 04:14:27

下面是一个从@Haring10的示例开始的示例:

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

代码语言:javascript
运行
复制
$('body').keydown(function(e) {
  e.preventDefault();
  e.stopImmediatePropagation();

  if(e.which == 40) {
    window.scrollBy(0, -100);
  } else {
    window.scrollBy(0, 100);
  }
});

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35143695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档