JavaScript捕获浏览器快捷方式(ctrl + t / n / w)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

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

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

我尝试过,但它不起作用:

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

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

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

提问于
用户回答回答于

Ctrl在Javascript中捕获键盘事件

示例代码:

$(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(); 
  }
});

Firefox

(6.0.1测试)

在Firefox中,这两个事件监听器都能工作 如果按下CtrlT或CtrlS组合键,则会在控制台上看到两条消息,并且浏览器不会打开选项卡,也不会要求保存。

这是intresting,如果你使用alert的不是console.logevent.preventDefault()不是作品,并打开一个新的标签,或者要求保存。也许这个bug需要修复。

Chrome3

在Chrome 3中,它的功能与Firefox相似。

Chrome4浏览器

(测试)

在Chrome4中,某些控制组合键仅用于浏览器使用,不能再被网页中的客户端JavaScript拦截。 这些限制在Chrome3中不存在,并且与Firefox3 / 3.5和IE7 / 8(在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视频进行测试。

用户回答回答于

截至2012年3月20日,已有一个Chrome修复程序允许Web应用程序在js keydown事件中处理Chrome中的Control + NWT(因此它可以在纯JavaScript或任何类似jQuery的库中使用)。

如果Chrome在应用程序模式下打开,此修复程序允许JavaScript处理此组合键,可以通过以下方式完成此操作:

此修复记录在此处:

扫码关注云+社区