Оповещение о продлении Mozilla каждые 30 минут - PullRequest
0 голосов
/ 06 января 2020

Привет, я хотел создать расширение, которое будет вызывать оповещение каждые 30 минут, чтобы напомнить мне проверить мою осанку. Но я застрял. Я не знаю, как сделать так, чтобы оповещение срабатывало только на той вкладке, на которой я сейчас нахожусь. Теперь оно срабатывает на каждой открывшейся вкладке. Может кто-то мне помочь, пожалуйста? Спасибо.

Как я сейчас думаю, таким образом, он будет начинать новый цикл каждый раз, когда я открываю новую вкладку, верно? Так что я его увижу через 30 минут, только если останусь в этой вкладке.

setInterval(function() {
    alert("Posture!");
}, 5000);
{
  "name": "Posture Checker",
  "version": "1.0",
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": [
        "<all_urls>"
      ],
      "js": ["posturecheck.js"]
    }
  ]
}

1 Ответ

0 голосов
/ 06 января 2020

Вы можете проверить, находится ли вкладка в фокусе, проверив, если document.hidden.

if (document.hidden) {
    // Document/tab/window is hidden
} else {
    // Document/tab/window is visible
}

В качестве альтернативы, вы также можете проверить document.visibiliyState, но он не возвращает логическое значение, а строковое значение, которое необходимо проверить:

if (document.visibilityState === 'hidden') {
    // Document/tab/window is hidden
} else if (document.visibilityState === 'visible') {
    // Document/tab/window is visible
}
...