Мое приложение меняет свое состояние, когда человек держит ключи-модификаторы (Shift, Alt, Ctrl). Я отслеживаю ключи-модификаторы с помощью событий keydown/keyup:
var altPressed;
window.onkeydown = window.onkeyup = function(e) {
    altPressed = e.altKey;
}
События клавиатуры не запускаются за пределами вкладки браузера. Теперь представьте себе следующий сценарий:
- Удерживать клавишу Shift
 - Нажмите ссылку на мое приложение, оно откроется в новом окне
 - Кнопка Release Shift
 
 keyup Событие не будет срабатывать на моей странице, когда оно не будет сфокусировано, поэтому мое приложение покажет, когда я снова сосредоточусь на вкладке "Мои приложения", это покажет, что нажата клавиша Shift.
Было бы хорошо, если события видимости страницы имели свойства ключа-модификатора. Увы, они не делают.
document.addEventListener('webkitvisibilitychange', function(e) {
    if (document.webkitHidden) return;
    e.altKey // undefined :(
}, false);