Изменение видимости документа по сравнению с размытостью / фокусом окна. Какая разница, когда и какую использовать? - PullRequest
0 голосов
/ 28 сентября 2019

В ECMAscript (= Javascript) есть два способа проверить, удален ли пользователь с вашей страницы или нет.Вы можете прослушать событие "visibilitychange" на document или прослушать события "blur" и "focus" на window.Есть ли разница между ними?

1 Ответ

0 голосов
/ 28 сентября 2019

Да.Наиболее существенную разницу между ними можно увидеть на телефонах.На настольных и планшетных устройствах, когда вы хотите изменить вкладку браузера, для этого достаточно ОДНОГО шага.Вы просто нажмите / нажмите, где вы хотите пойти, и вы там.Это выглядит так: tablet

Но на телефоне обычно есть ДВА шага.Сначала вы начинаете так:

phone

, а когда вы нажимаете на значок TABS, вы видите всплывающее меню, подобное этому,

phone tabs

Именно здесь основное различие между изменением видимости и размытием / фокусировкой становится очевидным и также может быть важным.Согласно "visibilitychange", пользователь еще не покинул вашу страницу на данном этапе.Но согласно «blur / focus» пользователь отсутствует.

Что касается других случаев, я использовал оба, чтобы увидеть, какой из них срабатывает раньше.Код:

document.addEventListener("visibilitychange", visChngF);
function visChngF()
      {
        if (document.hidden) { 
            console.log("hidden means user is gone");
        } else {
            console.log("visible means user is back");
        }
      }

window.addEventListener('blur', blurHappenedF);
      function blurHappenedF()
      {
      console.log("blur means user is away");
      }

window.addEventListener('focus', focusHappenedF);
function focusHappenedF()
      {
      console.log("focus means user is here");
      }

Результат: непредсказуемо.Иногда видимость меняется до размытия / фокусировки, а иногда и после.Это может даже произойти между событием размытия и событием фокуса.

...