无法触发chrome.browserAction.onClicked

时间:2017-08-23 23:05:10

标签: google-chrome-extension

我正在进行一些需要自动为元素生成ID的实验,我决定使用chrome扩展。

但是,当我登陆网站的主页时(例如https://secure.checkout.visa.com/),内容脚本才会被触发。一旦我导航到其他页面(例如点击“创建帐户”),脚本没有被触发,我试图在内容脚本上设置一个断点,但它只在主页上被点击,而不是在创建帐户上页。

知道这里出了什么问题吗?以下是代码:

// manifest.json
{
    "manifest_version": 2,
    "name": "Chrome Auto Gen ID",
    "description": "Generate IDs",
    "version": "1.0",

    "permissions": ["activeTab"],

    "background": {
        "scripts": ["event_page.js"],
        "persistent": false
    },

    "browser_action": {
        "default_title": "Auto generate ID"
    },

    "content_scripts": [
        {
            "matches": ["https://secure.checkout.visa.com/*"],
            "js": ["jquery-3.2.1.min.js", "auto_gen_id.js"],
            "all_frames": true,
            "run_at": "document_idle"
        }
    ]
}

内容脚本:

// auto_gen_id.js
var divs = document.getElementsByTagName("div");
var inputs = document.getElementsByTagName("input");
var sections = document.getElementsByTagName("section");
var count = 0;

function genId(list) {
    for (var i = 0; i < list.length; ++i) {
        var element = list[i];
        if (element.hasAttribute("id")) {
            continue;
        }
        element.id = "gen-id-" + count++;
    }
}

genId(divs);
genId(inputs);

后台脚本:

// event_page.js
chrome.browserAction.onClicked.addListener(function(tab) {
    console.log('Generating IDs on ' + tab.url);
    chrome.tabs.executeScript(null, {file: "auto_gen_id.js"});
});

1 个答案:

答案 0 :(得分:0)

感谢@makyen和@wOxxOm,按照以下建议解决问题:

Is there a JavaScript/jQuery DOM change listener