2

我正在嘗試爲我的Chrome擴展程序掛接鍵盤快捷鍵。我爲此使用了一個jQuery插件:http://oscargodson.com/labs/jkey/Chrome擴展程序中的鍵盤快捷鍵

下面是我使用來測試它的代碼:

$(document).ready(function() { 
    function say_hello() { 
     alert("hello!"); 
    } 
    $(document).jkey('/', say_hello); 
}); 

我有這個在我的背景頁的權利,但它不工作。這種類型的代碼應該放在後臺頁面,還是更適合內容腳本的東西?或者我應該把它放在別的地方嗎?

回答

1

背景頁面不能(通常)被聚焦或點擊,所以他們永遠不會收到事件。您必須將其注入爲內容腳本。

請注意,這不適用於某些頁面,包括新標籤頁。不幸的是,這是無法解決的。 :/

3

我知道這個問題是古老的,但爲了以防萬一,你有沒有發現,這裏的最新的解決問題的方法:

Chrome擴展,現在擁有,將觸發每當特定鍵組合是一個事件在任何Chrome窗口中按下(也許除了一個單獨的隱身會話,這是我沒有嘗試過),與chrome.commands API

下面是如何設置它:

  1. 添加「命令」關鍵是你的清單.json root,popul一個 或更多的命令(在這種情況下爲「重新啓動應用程序」)。每個命令應該爲 指定PC和Mac所需的組合鍵。 (有些連擊, 如Ctrl-F5,受到限制,僅供參考。林還不能確定是否描述 是可選的或必需的。)

    "commands": { 
        "Restart App": { 
        "suggested_key": { 
         "default": "Ctrl+Shift+5", 
         "mac": "Command+Shift+5" 
        }, 
        "description": "Restart my app (Debugging)" 
        } 
    } 
    
  2. 在background.js,處理程序綁定到「按需」事件和 過濾器的「命令」,當你的組合已被按下,這將匹配您 清單中聲明的​​關鍵是:

    chrome.commands.onCommand.addListener(function (command) 
    { 
        if (command == "Restart App") 
        { 
         chrome.runtime.reload(); 
        }; 
    }); 
    

就是這樣!

我曾經有人質疑熱鍵的價值,但我是他們的堅強擁護者。將鼠標/鍵盤模式切換到僅鍵盤所節省的時間量可能是每次使用1秒,但在幾次繁重的調試會話中,它開始累加起來。在上面的例子中添加快捷方式到我開發的應用程序可能現在保存了小時 :)

享受!

-Matt