簡體   English   中英

在Chrome擴展程序中觸發快捷方式

[英]Trigger shortcut in a Chrome extension

我正在構建一個Chrome擴展程序,並將命令_execute_browser_action分配給Alt + J。 我想在background.js中模擬它,該監聽使用

chrome.commands.onCommand.addListener(function(command) { /* ... */ });

我希望通過不同的命令快捷方式調用_execute_browser_action ,例如Cmd + Shift + K

在我的manifest.json文件中,我聲明了以下內容:

"commands": {
    "_execute_browser_action": {
        "suggested_key": {
          "mac": "Alt+J",
          "linux": "Ctrl+Shift+J"
        }
    },
    "asdf" : {
        "suggested_key": {
          "default": "Ctrl+Shift+K",
          "mac": "Command+Shift+K"
        },
        "description": "asdf"
    }
  }

這是我的background.js:

chrome.commands.onCommand.addListener(function(command) {
  console.log('onCommand event received for message: ', command);
  if (command === "asdf") {
    alert("asdf");
    var keyPress = jQuery.Event("keypress");
    keyPress.altKey = true;
    keyPress.ctrlKey = false;
    keyPress.which = 74;
    //how do I trigger this?
  }
});

我想知道如何觸發它,以便打開我的popup.html。

您無法自行觸發鍵盤快捷鍵。

以這種方式將其視為事件的時間表:

  1. 發生硬件事件,操作系統將其轉換為輸入事件。
  2. 如果這是Chrome注冊的全局快捷方式,或者如果Chrome是重點關注的,則OS會將事件調度到Chrome。
  3. Chrome瀏覽器會檢查它是否為已注冊的快捷方式。 如果是,則觸發相應的事件。
  4. 如果不是快捷方式,並且頁面處於焦點位置,Chrome會將事件作為DOM輸入事件傳遞到頁面中。
  5. 如果頁面中有jQuery,它將把DOM事件轉換成它自己的內部事件,匹配偵聽器並將內部事件分配給它們。

您的代碼僅觸發5個(內部jQuery事件)。
通過直接處理DOM事件 ,您最多可以執行4次操作。
在任何情況下,擴展都不能在此堆棧中返回3。

您正在嘗試通過代碼以回旋方式打開彈出窗口。 可悲的是,對於“普通”擴展來說,這根本不可能的 ,這是Chrome開發人員團隊的一項有意識的決定。

考慮另一種提供UI的方法,例如,使用內容腳本在當前頁面中提供通知或注入內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM