почему setInterval () не повторяет мою функцию? - PullRequest
0 голосов
/ 22 октября 2019

Я пытался сделать расширение Chrome, в котором функция должна повторяться через определенное время. Процесс выглядит следующим образом: нажатие кнопки (popup.html) -> выполнить (popup.js) -> триггеры (продолжение).js) -> обновлять страницу каждые 3 секунды.

popup.html

<!DOCTYPE html>
<html>

<body>
    Event (or) movie name:<input type="text" name="inp" id="inp1"><br>
    <button id="set">Set Reminder</button>
    <script type="text/javascript" src="popup.js"></script>
</body>

</html>  

popup.js

document.getElementById("set").addEventListener("click", function () {
    chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
        chrome.tabs.executeScript(tabs[0].id, { file: 'cont.js' });
    });
});

cont.js

setInterval(function () {
    location.reload(true);
}, 3000);

Перезагрузка страницы происходит только один раз, но в соответствии с функцией setInterval () это должно происходить каждые 3 секунды. Помоги мне. Заранее спасибо.

1 Ответ

0 голосов
/ 23 октября 2019

В расширении Chrome всплывающий скрипт выполняется только , пока всплывающая страница открыта и активна. Когда ваш cont.js запускается, он перезагружает вкладку, и всплывающая страница становится неактивной, так как вкладка перезагружается, в ней не будет сценария cont.js, и поскольку всплывающая страница неактивна,Сценарий popup.js не запускается, следовательно, он не будет вводить cont.js снова, и вкладка не будет перезагружаться каждые 3 секунды, как предполагается. Для этого создайте постоянный фоновый скрипт , этот тип сценария расширения всегда работает. Вот учебник для простого расширения, в котором показано, как использовать фоновые сценарии.

...