javascript - setInterval 重新加载页面谷歌浏览器扩展

标签 javascript google-chrome-extension

我有代码后台js:

chrome.contextMenus.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {
        code: "setInterval(function(){alert('test')}, 2000)"
    });
});

var id = chrome.contextMenus.create({
    "title": "Auto Refresh",
    "contexts": ["page"]
});​

它有效,每 2 秒它就会出现一个警报框“test”;

但我用 location.reload 替换了alert('test'):

chrome.contextMenus.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {
        code: "setInterval(function(){location.reload()}, 2000)"
    });
});

var id = chrome.contextMenus.create({
    "title": "Auto Refresh",
    "contexts": ["page"]
});​

第一次只有1次刷新,不再继续刷新。请帮助我,谢谢

最佳答案

刷新页面时,setInterval 句柄将会消失,因此它不会按您的预期工作。

解决方案是在扩展程序中执行 setInterval :

chrome.contextMenus.onClicked.addListener(function(tab) {
    setInterval(function() {
        chrome.tabs.executeScript(tab.id, {
            code: "location.reload()"
        });
    }, 2000);
});

var id = chrome.contextMenus.create({
    "title": "Auto Refresh",
    "contexts": ["page"]
});​

由于我承认您只想刷新当前页面,因此我将 tab.index 添加为 chrome.tabs.executeScript 的第一个参数,以便仅刷新当前页面页面正在刷新。

请注意用户可能会多次选择该选项,因此您可能需要检查是否是这种情况或删除上下文菜单项。另外,当选项卡关闭时,您需要调用clearInterval,否则会导致很多问题。这些留给你练习。

关于javascript - setInterval 重新加载页面谷歌浏览器扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995696/

相关文章:

javascript - 在正则表达式中只允许一次加号(+)

javascript - 使用 AJAX 自动更新 Symfony5 表单多选(选择列表)数据

google-chrome - 在后台选项卡中打开链接时保持 chrome 扩展弹出窗口打开

c# - Google Chrome 以什么格式存储扩展程序安装日期

javascript - 如何将PowerPoint图表转换为网络使用?

javascript - 续订过期的 Azure 移动服务 token

javascript - 使可切换内容占据剩余高度

javascript - 获取请求无法使用 Soundcloud JavaScript sdk(Chrome 扩展)进行跟踪

javascript - 在后台加载第二个网页以从此网页获取内容

Chrome网上应用店中用户计数的API调用?