我有一个页面操作,点击后会将用户带到另一个页面。
当用户点击地址栏中的铅笔图标时,他们将被带到当前标签中的其他页面,但我希望他们能够按住 ctrl , alt 或⇧使此页面在 new 标签或窗口中打开。这样他们就可以选择。
查看文档,我看不出这是否可行。看起来无法捕获页面操作上的按键。是这种情况吗?
答案 0 :(得分:2)
我想出了一个解决方法。我可以将内容脚本注入到侦听onkeydown
和onkeyup
事件的页面中。标志保存在localStorage中,在页面加载时设置为false
,如果按下altKey则设置为true
,在不再按下altKey时设置为false
。然后,后台页面可以在单击页面操作时请求此标志的值...
// 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);
}
});
// 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...
});
}