Как обнаружить, когда вкладка фокусируется или не в Chrome с JavaScript?

Я должен знать, просматривает ли пользователь в настоящее время вкладку или не в Google Chrome. Я пытался использовать размытость событий и фокус, связанный с окном, но только размытость, кажется, работает правильно.

window.addEventListener('focus', function() {
  document.title = 'focused';
});

window.addEventListener('blur', function() {
  document.title = 'not focused';
});

Странные работы события фокуса, только иногда. Если я переключусь на другую вкладку и назад, то событие фокуса не активируется. Но если я нажму на строку поиска и затем обратно на странице, то она будет. Или если я переключаюсь на другую программу, и затем обратно на Chrome она активируется, если вкладка будет в настоящее время фокусироваться.

70
задан fent 27 April 2010 в 11:40
поделиться

1 ответ

В конце концов, это может сработать, мне стало любопытно, и я написал этот код:

...
setInterval ( updateSize, 500 );
function updateSize(){
  if(window.outerHeight == window.innerHeight){
    document.title = 'not focused';             
  } else {
    document.title = 'focused';
  }

  document.getElementById("arthur").innerHTML = window.outerHeight + " - " + window.innerHeight;
}
...
<div id="arthur">
  dent
</div>

Этот код делает именно то, что вы хотите, но некрасиво. Дело в том, что Chrome, кажется, время от времени игнорирует изменение заголовка (при переключении на вкладку и удерживании мыши в течение 1 секунды, похоже, всегда создается этот эффект).

На экране будут отображаться разные значения, но заголовок не изменится.

вывод: Что бы вы ни делали, при тестировании не доверяйте результату!

2
ответ дан 24 November 2019 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: