2017-07-27 108 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