当用户按下修饰键(Shift、Alt、Ctrl)时,我的应用程序会改变其状态。我使用keydown / keyup事件来跟踪修饰键:
var altPressed;
window.onkeydown = window.onkeyup = function(e) {
altPressed = e.altKey;
}
键盘事件无法在浏览器标签之外触发。现在,想象以下情景:
- 按住 Shift 键
- 单击链接到我的应用程序,它将在一个新窗口中打开
- 释放 Shift 键
keyup
事件不会在我的页面失去焦点时触发,因此当我再次聚焦于我的应用程序标签时,它仍显示 Shift 键被按下的状态。
如果 页面可见性事件 具有修饰键属性,那就太好了。但是,它们没有这样的属性。
document.addEventListener('webkitvisibilitychange', function(e) {
if (document.webkitHidden) return;
e.altKey // undefined :(
}, false);