документ.hasFocus () для chrome


Кто-нибудь знает, что использовать вместо hasFocus() для Chrome? Я хочу знать, когда моя вкладка Chrome имеет фокус или нет, поэтому я могу мигать предупреждающим сообщением в заголовке.

Ура

3 2

3 ответа:

Вы можете прослушивать события onfocus/onblur и таким образом отслеживать состояние страницы.

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <div id="output">
    </div>
    <script>
      var has_focus = true;

      function print(str) {
        var out = document.getElementById('output')      
        out.innerText = out.innerText + "\n" + str;
      };

      window.onfocus = function() {
        print('focus');
        has_focus = true;
      };

      window.onblur = function() {
        print('blur');
        has_focus = false;
      };
    </script>
  </body>
</html>

API видимости страницы должен сделать трюк: https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

Документ.скрытые

Возвращает true, если страница находится в состоянии, рассматриваемом как быть скрытым для пользователя и ложным в противном случае.

Конечно, поскольку это новый API, вам нужно будет использовать различные префиксы браузера:

if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support 
    hidden = "hidden";
} else if (typeof document.mozHidden !== "undefined") {
    hidden = "mozHidden";
} else if (typeof document.msHidden !== "undefined") {
    hidden = "msHidden";
} else if (typeof document.webkitHidden !== "undefined") {
    hidden = "webkitHidden";
}
var isHidden = document[hidden];
// or even
var isFocused = !isHidden;

Вы бы использовали тег document.activeElement.