设置键盘快捷方式以触发Chrome扩展程序

时间:2020-10-01 23:41:16

标签: javascript google-chrome google-chrome-extension

我有一个简单的Chrome扩展程序,无法通过键盘快捷键来触发。我的扩展程序查看匹配的URL,从中提取客户ID,然后将该客户ID附加到Tableau Online URL,并重定向页面或在Tableau Online上打开一个新标签到该页面。

我的manifest.json和runtime.js文件具有:

manifest.js

...
"permissions": ["storage", "declarativeContent", "activeTab", "tabs"],
...
"commands": { "open_tableau_report": 
  { "suggested_key": { "default": "Ctrl+Shift+Y" }, "description": "Open Tableau Report"}},
...

runtime.js

chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
    if (msg.text) {
        switch (msg.text) {
        case 'open_tableau_report':
            chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
                chrome.storage.sync.get(['tableauBaseUrl','vsExtTarget'], function(items){
                    let url = tabs[0].url;
                    let vsid = url.match(/https:\/\/foo.com\/customers\/detail\/([a-f0-9]{24})/)[1];
                    target = items.vsExtTarget;
                    tableau_base_url = items.tableauBaseUrl;
                    if (target == 'new')  {
                        chrome.tabs.create({url: tableau_base_url + vsid}); // new tab
                    } else {
                        chrome.tabs.update({url: tableau_base_url + vsid}); // same tab
                    }
                });
            });
            break;
        default:
            sendResponse('');
        }
    }
});

当我触发快捷键组合时,我在Chrome DevTools中看到此错误:

Error in event handler: TypeError: Cannot read property 'query' of undefined
    at chrome-extension://pdjmgncpljjageanemimmdfpdokdfodm/main.js:5:16

是否已在权限中添加了“标签”,我假设Chrome扩展程序根本无法访问chrome.tabs?如何重新编写runtime.js中的代码以响应键盘快捷键?谢谢!!

0 个答案:

没有答案