单击Chrome页面操作时如何捕获键修饰符

时间:2013-12-02 12:05:10

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

我有一个页面操作,点击后会将用户带到另一个页面。

enter image description here

当用户点击地址栏中的铅笔图标时,他们将被带到当前标签中的其他页面,但我希望他们能够按住 ctrl alt 使此页面在 new 标签或窗口中打开。这样他们就可以选择。

查看文档,我看不出这是否可行。看起来无法捕获页面操作上的按键。是这种情况吗?

1 个答案:

答案 0 :(得分:2)

我想出了一个解决方法。我可以将内容脚本注入到侦听onkeydownonkeyup事件的页面中。标志保存在localStorage中,在页面加载时设置为false,如果按下altKey则设置为true,在不再按下altKey时设置为false。然后,后台页面可以在单击页面操作时请求此标志的值...

contentscript.js

// When the page action is clicked this flag could be left as true
// so we always set it to false on page load
localStorage["isAltKeyPressed"] = false;

window.addEventListener('keydown', recordAltKeyPress);
window.addEventListener('keyup', recordAltKeyPress);

function recordAltKeyPress(evt) {
    localStorage["isAltKeyPressed"] = evt.altKey;   
}

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if(request === "isAltKeyPressed") {
            sendResponse( localStorage["isAltKeyPressed"] );
        } else {
            sendResponse(undefined);    
        }
});

background.js

// Function to perform when pageAction is clicked
chrome.pageAction.onClicked.addListener(myFunction);

function myFunction(tab) {
    chrome.tabs.sendMessage(tab.id, "isAltKeyPressed", function(response) {
        // The response comes back as a string, we need a boolean...
        var isAltKeyPressed = (response === "true");
        // Do stuff...
    });
}