【问题标题】:Any way to override Ctrl+N to open a new window in Chrome?有什么方法可以覆盖 Ctrl+N 在 Chrome 中打开一个新窗口?
【发布时间】:2021-08-05 17:42:47
【问题描述】:

我在工作中使用网络应用程序,我经常使用的快捷方式之一是 Ctrl+M。但是,我经常打字很快,并且误按了 Ctrl+N,而不是在我的 Web 应用程序中触发操作,而是打开了一个新窗口。我希望能够防止这种情况,但我似乎无法弄清楚如何。到目前为止,我已经尝试在每次页面加载时运行此代码,但它似乎没有做任何事情。 (忽略我只使用一个键的开关这一事实,我还有一些其他自定义 Ctrl 快捷方式不会覆盖正在工作的 Chrome 快捷方式,我只是为了便于阅读而删除了它们)

document.onkeydown = function(e) 
{
    if(e.ctrlKey === false)
    {
        return;
    }

    switch(e.which) {
        case 78:
            //just to keep from opening a new tab when merging cells
            e.preventDefault();
            e.stopPropagation();
            break;
        default: 
        return;
    }
};

【问题讨论】:

  • 这是一项浏览器功能 - 不是您可以在应用级别控制的。
  • 但是例如,我使用的网络应用程序会覆盖 Ctrl+S 以保存在网络应用程序内部,而不是将原始 HTML 保存到磁盘。 Ctr+N有没有办法做到这一点?
  • @Vld 真正的答案是很多浏览器快捷方式可以被拦截。不幸的是,Ctrl+N 不是其中之一……至少对于 Chrome。您可以更改您的应用,使其使用不同的快捷方式
  • @NullUserException - 实际上我只是感觉很简洁。您可以(尝试)捕获 Ctrl + N 但不能阻止默认行为。老实说,有一个很好的理由 - 如果一个网站拒绝我的默认快捷方式,我会很生气。

标签: javascript google-chrome


【解决方案1】:

无法覆盖 Ctrl+NCtrl+TCtrl +W 自 Chrome 版本 4(2010 年发布)起在 Google Chrome 中。

the Chromium issue tracker所述:

在 Chrome4 中,某些控制键组合已保留仅供浏览器使用,无法再被网页中的客户端 JavaScript 拦截。

唯一已知的解决方法是将您的网页/扩展程序作为 Chrome 应用程序打开,在该应用程序中它将再次有权覆盖这些列入黑名单的组合键

【讨论】:

  • 欢迎来到 Stack Overflow!虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供参考链接。
【解决方案2】:

您可以在 GateOne 项目中找到一个讨论相同问题的 github 问题here

他们说唯一的解决方法是“创建应用程序快捷方式”,您现在可以覆盖 Ctrl+N 键。

【讨论】:

    【解决方案3】:

    在 Linux 下,可以通过在 Xorg 级别重新定义键盘映射来禁用组合。然后它将对当前会话中在 X 下运行的所有应用程序禁用。在以全屏模式运行的信息亭型应用程序中禁用各种控制组合通常很有用。例如,您的 .xinitrc 可以设置自定义键盘映射:

    #!/usr/bin/env bash
            
    test -f ~/.Xkeymap && xkbcomp ~/.Xkeymap $DISPLAY &
            
    while :; do
    /usr/lib/chromium-55.0.2866.0-16k/chrome-wrapper \
    --disable-seccomp-filter-sandbox --user-data-dir=.chromium-55.0.2866.0-16k \
    --app="http://1.1.1.1:10001/terminal/start" --start-fullscreen \
    --kiosk --window-position=0,0 --window-size=1920,1080 
    done
    

    当与<Ctrl> 和其他修饰键结合使用时,您修改后的 .Xkeymap 会将 <LatN> 键重新映射到像 <F3> 这样无害的东西:

        type "MYCONTROL" {
            modifiers= Shift+Lock+Control+Alt+LevelThree;
            map[Shift]= Level2;
            map[Lock]= Level2;
            map[Alt]= Level3;
            map[LevelThree]= Level4;
            map[Shift+LevelThree]= Level5;
            map[Control+Alt]= Level6;
            map[Control]= Level7;
            map[Shift+Control]= Level8;
            level_name[Level1]= "Base";
            level_name[Level2]= "Caps";
            level_name[Level3]= "Alt Base";
            level_name[Level4]= "L3 Base";
            level_name[Level5]= "Shift L3";
            level_name[Level6]= "Ctrl+Alt";
            level_name[Level7]= "Ctrl Base";
            level_name[Level8]= "Shift+Ctrl";
        };
    
    ...
    
        key <LatN> {
           type= "MYCONTROL",
           symbols[Group1]= [ n, N, F3, F3, F3, F3, F3, F3 ]
        };
    

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 2020-12-31
      • 2014-07-12
      • 1970-01-01
      相关资源
      最近更新 更多