Обнаружение видимости вкладки в Firefox - PullRequest
6 голосов
/ 03 декабря 2009

Я пишу веб-приложение, которое выполняет действие каждую минуту или около того, которое (очень кратко) приводит к зависанию браузера. Я бы хотел приостановить это действие, когда вкладка с отображением веб-приложения не отображается, чтобы минимизировать раздражение. Есть ли способ сделать это, используя Javascript, в последней версии Firefox?

Редактировать: чтобы уточнить, я спрашиваю о том, как определить видимость вкладки, на которой выполняется некоторый код JS, а не о том, как приостановить / возобновить действие, которое приводит к зависанию браузера.

Ответы [ 3 ]

7 голосов
/ 03 декабря 2009
var isFocused = true;

window.onblur=function(){
  if(isFocused==true){
    isFocused=false;
  }
}

window.onfocus = function(){
  isFocused = true;
}

Теперь, когда вы выполняете действие каждую минуту или две, делайте это только тогда, когда isFocused имеет значение true. Это когда вкладка вашей страницы / веб-приложения сфокусирована.

2 голосов
/ 03 декабря 2009

Не проверено, но как насчет этого:

window.onblur() = function () { ... pause your script here }

Я не знаю, обрабатывает ли Firefox размытие окна во вкладках как отдельные окна.

1 голос
/ 03 декабря 2009

Полагаю, вам нужно обойтись событием window.onblur, поскольку доступ к окну браузера из сценария на веб-странице запрещен по соображениям безопасности (разрешен только для привилегированных сценариев).

То, что вы хотите сделать (открыть окно браузера из дочернего окна или веб-страницы), описано в Mozilla Developer Center , но там упоминается, что это может сделать только привилегированный скрипт, и вы, вероятно, получите сообщение об ошибке «Отказано в доступе» при попытке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...