覆盖Chrome中的书签快捷方式(Ctrl + D)功能

时间:2012-11-17 09:05:50

标签: google-chrome google-chrome-extension keyboard-shortcuts bookmarks

是否可以覆盖 Ctrl + D ?我想,例如console.log或其他东西,而不是添加书签的链接。

3 个答案:

答案 0 :(得分:9)

可以使用chrome.commands API覆盖快捷方式。扩展程序可以在清单文件中建议默认快捷方式(例如Ctrl + D),但用户可以在chrome://extensions/处覆盖此权限,如下所示:

Keyboard Shortcuts - Extensions and Apps

用法

此API仍在开发中,仅在BetaDev渠道提供,而Canary版本 More info 。它可能适用于从Chrome 24开始的每个人。

如果您要在Chrome 23或更低版本中测试API,请向清单文件添加“实验性”权限,并使用chrome.experimental.commands代替chrome.commands。另请访问chrome://flags/并启用“实验性扩展API”,或使用--enable-experimental-extension-apis标记启动Chrome。

manifest.json

{
    "name": "Remap shortcut",
    "version": "1",
    "manifest_version": 2,
    "background": {
        "scripts": ["background.js"]
    },
    "permissions": [
        "tabs"
    ],
    "commands": {
        "test-shortcut": {
            "suggested_key": {
                "default": "Ctrl+D",
                "mac": "Command+D",
                "linux": "Ctrl+D"
            },
            "description": "Whatever you want"
        }
    }
}

background.js

// Chrome 24+. Use chrome.experimental.commands in Chrome 23-
chrome.commands.onCommand.addListener(function(command) {
    if (command === 'test-shortcut') {
         // Do whatever you want, for instance console.log in the tab:
         chrome.tabs.query({active:true}, function(tabs) {
             var tabId = tabs[0].id;
             var code = 'console.log("Intercepted Ctrl+D!");';
             chrome.tabs.executeScript(tabId, {code: code});
         });
    }
});

文档

答案 1 :(得分:4)

没有必要使用chrome.commands - 您可以使用内容脚本来捕获keydown事件,在其上调用preventDefaultstopPropagation,然后处理它你要。应作为内容脚本的一部分工作的示例代码段:

document.addEventListener('keydown', function(event) {
  if (event.ctrlKey && String.fromCharCode(event.keyCode) === 'D') {
    console.log("you pressed ctrl-D");
    event.preventDefault();
    event.stopPropagation();
  }
}, true);

您不能以这种方式覆盖的唯一事情是窗口处理命令,例如ctrl-Nctrl-<tab>

答案 2 :(得分:0)

替代解决方案: 在浏览器的地址栏中输入chrome:extensions。这将打开Chrome扩展程序页面。

单击左上方菜单中的键盘快捷键(“菜单/汉堡按钮”)

将Strg-D分配给不会改变书签的插件。

这将解决当您不小心按下Ctrl-D时直接创建书签的问题,而在这种情况下会弹出其他插件。