【问题标题】:Is there a way to programmatically press keyboard keys?有没有办法以编程方式按下键盘键?
【发布时间】:2017-08-09 21:46:25
【问题描述】:

客户端需要以编程方式按“C”、“Ctrl”、“Shift”、“5”等键盘键。

我检查了一些 API,但只有按键处理可用。 示例:

.keypress()

是否有可以模仿这种行为的可用函数?

[更新代码]

$("#input").focus();
window.crossBrowser_initKeyboardEvent("keypress", {"key": 1, "char": "!", shiftKey: true});

我在更新代码中的目标是聚焦文本字段并触发按键,以便我想要显示的字符显示在文本字段中。但是,上面的代码也不起作用。

【问题讨论】:

  • 如果您能找出原因以及在什么情况下需要这样做,我们或许可以提供帮助。 . .
  • Simulate JavaScript Key Events 的可能重复项
  • @PatDobson:客户想要的是能够通过单击一个按钮而不使用 Flash(只是纯 JS)将项目复制到 Chrome 中的剪贴板。我已经检查过了,但由于一些安全风险,它似乎不受支持。因此,客户认为如果有办法触发键盘,例如以编程方式按下 CTRL+C,那么它可能会解决这个问题。

标签: javascript jquery


【解决方案1】:

使用 jquery

var e = jQuery.Event("keydown");
    e.which = 8; // # Some key code value
    $("input").trigger(e);

更多reference,另见This

【讨论】:

  • 这是否会触发系统键,以使用户似乎单击了 CTRL+C?请参考上面的【更新代码】。
  • @KimHonridez 浏览我提供的第二个链接
  • Getting, "TypeError: inst is undefined" on trigger call.
【解决方案2】:

如果你不想使用 jQuery,这是我推荐的,将它粘贴到你的脚本标签中,运行它,然后按大写 A 来查看消息。

document.addEventListener("keypress", function (e) 
{                                            //Start of addEventListener
       if (e.which == 65)                    //When A is pressed
                alert("A was pressed");      //Message will show
}, false);                                   //End of addEventListener

【讨论】:

  • 问题是关于触发 keydown 事件而不是处理它,这不能回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多