为什么setInterval()不重复我的功能?

时间:2019-10-22 18:02:40

标签: javascript google-chrome-extension setinterval

我试图做一个chrome扩展,在特定时间后将要重复执行一个功能。流程如下,按button(popup.html)-> execute(popup.js)-> triggers(cont .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 :(得分:0)

在Chrome扩展程序中,弹出脚本仅在弹出页面处于打开状态且处于活动状态时才执行。 cont.js运行时,它将重新加载选项卡,并且弹出页面变为非活动状态,因为重新加载了选项卡,因此其中没有cont.js脚本,并且由于弹出页面处于非活动状态,popup.js脚本不会运行,因此不会再次注入cont.js,并且该选项卡不会按预期的那样每3秒钟重新加载一次。为此,创建一个持久后台脚本,这种扩展脚本始终处于运行状态。这是tutorial的简单扩展,向您展示了如何使用后台脚本。