【问题标题】:Simulate multiple keypress using jquery使用 jquery 模拟多个按键
【发布时间】:2019-02-05 16:09:12
【问题描述】:

我希望能够在 Chrome 中使用 jQuery 模拟键盘事件“Ctrl+Shift+N”。我试过的是:

var e = jQuery.Event("keypress");
e.ctrlKey = true;
e.shiftKey = true;
e.keyCode = e.which = 78;
$("body").trigger(e);

该快捷方式应该打开 Chrome 隐身窗口。但是没有运气。我做错了什么?

【问题讨论】:

  • 看我的回答。我猜对了。

标签: jquery


【解决方案1】:

如果你运行 sn-p 并在内容中看到 78(78 是 N 的键码),它会起作用。

<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script>
  $(function () {
    $("body").keypress(function (e) {
      $(this).html(e.which);
    });
    var e = jQuery.Event("keypress");
    e.ctrlKey = true;
    e.shiftKey = true;
    e.keyCode = e.which = 78;
    $("body").trigger(e);
  });
</script>

如果您希望 Chrome 浏览器打开一个新的隐身窗口,那您就错了。 ? 这些不会干扰您的浏览器快捷方式,并且它们在沙盒模式下运行。这就像您试图从浏览器发出 Ctrl + Alt + Del 一样,这将是一个巨大的安全问题!

有一个很好的答案here,可能是相关的:

如果您的目标是实现类似于 sendKeys 功能的浏览器(您可以将击键直接发送到键盘缓冲区的功能),那么您将无法实现这一目标。在浏览器中触发键事件将事件发送到 DOM 处理程序而不是键盘缓冲区。由于这个原因,如果没有从浏览器到操作系统的安全漏洞,就不可能在浏览器中模拟一个实际工作的键盘,该键盘将笔划发送到键盘缓冲区。

因此,您的意图的简单答案是

【讨论】:

  • 感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2015-02-04
  • 2011-09-18
  • 2010-11-30
  • 2012-03-02
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多