Определить, какая вкладка / окно находится в фокусе в Google Chrome - PullRequest
2 голосов
/ 19 мая 2011

Я делаю расширение Chrome, которое содержит скрипт контента, который выполняет следующее:

  • скрипт контента внедряется в каждую страницу
  • периодически вызывает функцию "a" каждые5 секунд
  • , если страница находится в фокусе, она вызывает функцию "b".

В идеале функцию "a" следует вызывать для каждой вкладки, но функция "b" будеттолько для вкладки, которая сфокусирована.

Я рассмотрел несколько способов сделать это, самое близкое решение, которое я нашел, это: Как определить, фокусируется ли вкладка или нетв Chrome с Javascript?

Однако, когда я попытался использовать метод externalHeight / innerHeight, он дал мне действительно странные результаты.Когда окно не в фокусе, я получаю 0 для externalHeight.Для меня это больше похоже на ошибку, поэтому я не уверен, смогу ли я использовать это, чтобы определить, находится ли вкладка не в фокусе.

У кого-нибудь есть хорошее решение для этого?

1 Ответ

6 голосов
/ 19 мая 2011

Не знаю решения для скрипта контента, но это легко сделать с помощью фоновой страницы:

content_script.js:

function task() {
    chrome.extension.sendRequest("is_selected", function(isSelected) {
        if(isSelected) {
            //this tab in focus
        } else {
            //not in focus
        }
    });
}
setInterval(task, 5000);

background.html:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if(request == "is_selected") {
        chrome.tabs.getSelected(null, function(tab){
            if(tab.id == sender.tab.id) {
                sendResponse(true); //in focus (selected)
            } else {
                sendResponse(false);    //not in focus
            }
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...