jquery - javascript 捕获浏览器快捷键 (ctrl+t/n/w)

标签 jquery events browser keyboard-shortcuts

是否可以捕获这些快捷方式?

  • Ctrl+N
  • Ctrl+T
  • Ctrl+W

我试过了,但没用:

$(window).keydown(function(event) {
  console.log(event.keyCode);
  event.preventDefault();
});

当我按下 T 时,它在控制台中显示 84,但是如果我按下 Ctrl+T 它什么都不显示,并打开一个新标签。

我想捕获这些快捷方式并阻止任何浏览器操作。

最佳答案

在Javascript中捕获Ctrl键盘事件

示例代码:

$(window).keydown(function(event) {
  if(event.ctrlKey && event.keyCode == 84) { 
    console.log("Hey! Ctrl+T event captured!");
    event.preventDefault(); 
  }
  if(event.ctrlKey && event.keyCode == 83) { 
    console.log("Hey! Ctrl+S event captured!");
    event.preventDefault(); 
  }
});

火狐

(6.0.1 测试)

在 Firefox 中,两个事件监听器都可以工作。如果您按 CtrlTCtrlS 组合键,您将在控制台和浏览器上收到消息不会打开标签页,也不会要求保存。

有趣的是,如果您使用 alert 而不是 console.log,则 event.preventDefault() 将不起作用,并且打开一个新标签或要求保存。也许这个错误需要修复。


Chrome3

在 Chrome 3 中,它像在 Firefox 中一样工作。


Chrome4

(已测试)

In Chrome4, certain control key combinations have been reserved for browser usage only and can no longer be intercepted by the client side JavaScript in the web page.
These restrictions did not exist in Chrome3 and are inconsistent with both Firefox3/3.5 and IE7/8 (on Windows).

在 Chrome 4 中,它的工作方式类似于 Firefox,除了一些键盘组合:

  • CtrlN

  • CtrlShiftN

  • CtrlT

  • CtrlShiftT

  • CtrlW

  • CtrlShiftW

Javascript 无法捕获这些组合,嵌入插件可以捕获这些组合。例如,如果您专注于 Youtube 视频并按 CtrlT,浏览器将不会打开新标签页。


IE7/8

它像在 Firefox 或 Chrome3 中一样工作。


IE9

(已测试)

IE9 又是害群之马,因为它不允许 javascript 捕获任何 Ctrl? 键盘事件。我测试了很多键盘组合(R、T、P、S、N、T),但都没有用。嵌入式应用程序也无法捕获该事件。使用 Youtube 视频进行测试。


感谢@Lime为了伟大link .

关于jquery - javascript 捕获浏览器快捷键 (ctrl+t/n/w),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7295508/

相关文章:

javascript - JQuery 根据 <select> 中的值查找 <option> 标签

javascript - 捕获无序列表中 anchor 元素的点击

jquery - 需要动态生成 "sticky note"文本

javascript - FileReader 异步读取方法是否会阻塞主线程?

ajax - 为什么 AJAX 在 Netscape Navigator 中不起作用?

C# Web 浏览器构造函数

jquery - 如何将悬停更改为单击事件?

events - 在PowerShell中,如何为COM对象实现事件处理程序?

ios - 我们如何使用 Watchkit Touch 事件?

C# 将委托(delegate)作为参数传递