一尘不染

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

javascript

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

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

我试过了,但是没有用:

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

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

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


阅读 652

收藏
2020-05-01

共1个答案

一尘不染

Ctrl用Java 脚本捕获键盘事件

样例代码:

$(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中,两个事件侦听器均有效。如果按Ctrl``T或键Ctrl``S组合,则将在控制台上同时显示两条消息,并且浏览器不会打开选项卡,也不会要求保存。

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


Chrome3

在Chrome 3中,它的工作方式类似于Firefox。


Chrome4

(已测试)

在Chrome4中,某些控制键组合仅保留供浏览器使用,并且不能再由网页中的客户端JavaScript拦截。
这些限制在Chrome3中不存在,并且与Firefox3 / 3.5和IE7 / 8(在Windows上)均不一致。

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

  • Ctrl``N

  • Ctrl``Shift``N

  • Ctrl``T

  • Ctrl``Shift``T

  • Ctrl``W

  • Ctrl``Shift``W

这些组合不能被Javascript捕获, 但是
嵌入插件可以捕获这些组合。例如,如果您聚焦于YouTube视频并按Ctrl``T,则浏览器将不会打开新标签。


IE7 / 8

它的工作方式类似于Firefox或Chrome3。


IE9

(已测试)

IE9再次成为败类,因为它不允许javascript捕获任何Ctrl``?键盘事件。我测试了许多键盘组合(R,T,P,S,N,T),但都没有用。嵌入的应用程序也无法捕获事件。经过YouTube视频测试。

2020-05-01