【问题标题】:Chrome Extension: browserAction Click button work onceChrome 扩展程序:browserAction 单击按钮工作一次
【发布时间】:2016-04-25 16:39:12
【问题描述】:

我正在开发 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"
      }
}

background.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;

}

script.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()});
    }
});

【问题讨论】:

  • 你有什么问题?
  • @HibaraAi 傻我。问题已更新

标签: javascript jquery google-chrome google-chrome-extension


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2017-05-08
    相关资源
    最近更新 更多