是否可以覆盖Ctrl+D这个快捷键?例如我想要使用console.log
等功能,而不是添加到书签中。
是否可以覆盖Ctrl+D这个快捷键?例如我想要使用console.log
等功能,而不是添加到书签中。
使用chrome.commands
API可以覆盖快捷方式。扩展程序可以在清单文件中建议默认的快捷键(例如Ctrl + D),但用户可以在 chrome://extensions/
下自由覆盖它,如下图所示:
此API仍在开发中,仅适用于Beta和Dev渠道,以及Canary版本更多信息。从Chrome 24开始,它可能会面向所有人提供。
如果您想在Chrome 23或更低版本中测试API,请将“experimental”权限添加到清单文件中,并改为使用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});
});
}
});
不必使用chrome.commands
-- 您可以使用内容脚本来捕获keydown
事件,调用preventDefault
和stopPropagation
,并以任何您想要的方式处理它。以下是一个示例片段,应作为内容脚本的一部分工作:
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-N
和ctrl-<tab>
。file://
。尽管如此,这是在旧版Chrome中唯一可行的方法。 - Rob W替代解决方案: 在浏览器地址栏中输入chrome:extensions,这将打开Chrome扩展页面。
在左上角菜单(“菜单/汉堡按钮”)中单击“键盘快捷方式”。
将Ctrl-D指定到一个不会改变你的书签的插件。
这样就可以解决当你意外按下Ctrl-D时直接创建书签的问题,而是弹出另一个插件。