setInterval重新加载页面Google Chrome扩展名



我有代码背景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')。

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,否则您将造成很多问题。这些留给您练习。

@alvin,

基于您的答案,我找到了解决方案:

chrome.contextMenus.onClicked.addListener(function(tab) {
    var tabID;
    chrome.tabs.getSelected(null, function(tab) {
        tabID = tab.id;
    });
    setInterval(function() {
        chrome.tabs.executeScript(tabID, {
            code: "location.reload()"
        });
    }, 2000);
});
var id = chrome.contextMenus.create({
    "title": "Auto Refresh",
    "contexts": ["page"]
});

我添加了chrome.tabs.getsected以保存tab.id,此解决方案很满意:d

最新更新