Chrome扩展程序:浏览器操作单击按钮工作一次



我正在开发Chrome扩展程序,该扩展程序在单击扩展程序图标时打开链接。清单如下。

问题是,一旦获取数据并打开链接,它就不会在同一页面上再次执行。

{
    "manifest_version": 2,
    "name" : "xxx",
    "description" : "Open links",
    "version" : "1.1",
    "background" : {
        "scripts" : ["jquery.js","background.js"]
    },
    "content_scripts" : [{
        "matches" : ["*://xxx/*"],
        "js" : ["jquery.js","script.js"],
        "run_at": "document_end"
    }],
"icons":
    {
    "16": "icon16.png",
    "48": "icon48.png"
    },
    "web_accessible_resources": [
        "script.js",
        "jquery.js",
        "background.js"
    ],
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
    "browser_action": {
        "default_title": "xxx",
        "default_icon": "icon16.png"
      }
}

背景.js

var l = 0;
var lnks = null;
chrome.browserAction.onClicked.addListener(function (tab)
{
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs)
    {
        chrome.tabs.sendMessage(tab.id, {method: "sendHTML"}, function(response)
            {
                var val = null;
                if(response.data != null) {
                    lnks = parse_links(response.data);
                    val = setInterval(function(){
                        var total = lnks.length;
                        if (l < lnks.length) {
                            console.log(lnks[l]);
                            chrome.tabs.create({ url: lnks[l] });
                            l++;
                        } else {
                            clearInterval(val);
                        }

                    }, 5000);
                }
            }
        );
    });
});
function openTab(url) {
    l++;
}
function parse_links(body) {
    var jq = $(body);
    var tble = jq.find("table");
    var legit_links = [];
    var link = null;
    jq.find('table a').each(function() {
        //val = setInterval(openTab,4000,lnks[i]);
        link = $(this).attr('href').trim();
        if(link.indexOf("?accountid") !== -1) {
            $(this).click();
            legit_links.push(link)
        }
    });
    return legit_links;
}

脚本.js

chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
//    alert('Message from View:n'
//          + JSON.stringify(msg));
    if (msg.method === 'sendHTML')
    {
        sendResponse({ data:$("body").html()});
    }
});

你忘了清除l,那么下次你点击browser action,它仍然是lnks.length的值。

设置l = 0 clearInterval何时解决您的问题。

最新更新