2017-07-27 104 views

回答

4

没有办法以编程方式指定快捷键,但可以在扩展弹出窗口中添加一个按钮或链接,以打开内置对话框。

popup.html:

<button id="hotkey">Assign a shortcut key</button> 
<script src="popup.js"></script> 

popup.js:

document.getElementById('hotkey').onclick =() => chrome.tabs.create({ 
    url: 'chrome://extensions/configureCommands' 
}); 

注:

  • 铬://网址只能通过铬/ WebExtensions API方法被打开,
    但不能通过<a href="...">直接链接。

    您仍然可以使用标准的<a>链接与上面显示的点击侦听器;只是不要忘了阻止默认点击事件,以避免在控制台中的错误:

    document.getElementById('hotkey').onclick = event => { 
        chrome.tabs.create({url: 'chrome://extensions/configureCommands'}); 
        event.preventDefault(); 
    }; 
    
  • 在Opera浏览器的URL是opera://settings/configureCommands
    可以使用navigator.userAgent

  • 在检测浏览器Firefox没有UI来自定义WebExtensions命令快捷键。

  • 一个可能的增强是首先检查是否有这样的网址在一些标签,按我们的按钮已经打开:

    chrome.tabs.query({url: 'chrome://extensions/configureCommands'}, tabs => { 
        if (tabs && tabs[0]) { 
        chrome.tabs.update(tabs[0].id, {active: true}); 
        chrome.windows.update(tabs[0].windowId, {focused: true}); 
        } else { 
        chrome.tabs.create({url: 'chrome://extensions/configureCommands'}); 
        } 
    }); 
    

    但是,它不会找到对话框中手动调用对铬:// extensions页面因为它不会更改网址。

    在manifest.json中可能需要"permissions": ["tabs"]或至少["activeTab"]

+0

出于兴趣,你在哪里挖掘出'chrome:// extensions/configureCommands' URL? – Xan

+0

它是几个月前在[Stylus](https://github.com/openstyles/stylus)中添加的,这是旧版Stylish扩展的新分支。 – wOxxOm

+0

哦,它实际上在https://developer.chrome.com/extensions/commands#usage _的文档中。“用户可以从chrome:// extensions/configureCommands对话框中手动添加更多快捷方式。”_ – Xan