单击badgeText上的计数器

时间:2017-10-01 21:20:25

标签: javascript google-chrome-extension counter

有人可以指导我如何更正此代码以在Chrome扩展程序中创建可点击按钮计数器徽章吗?现在它正在快速上升,但只有当我点击一个名为"完成"的按钮时我才需要加注。

background.js

var i = 1;

function updateIcon() {
    i = 1;
    chrome.browserAction.setBadgeText({
        text: ''
    });
    chrome.browserAction.setPopup({
        popup: "popup.html"
    });
}


chrome.browserAction.setBadgeBackgroundColor({
    color: [200, 0, 0, 100]
});

window.setInterval(function () {
    chrome.browserAction.setBadgeText({
        text: String(i)
    });
    i++;
}, 4000);

popup.js

document.addEventListener("DOMContentLoaded", function () {
    //Get Reference to Functions
    backGround = chrome.extension.getBackgroundPage();
    //Call Function
    backGround.updateIcon();
});

的manifest.json

{
    "name": "Bagde",
    "description": 
    "version": "1",
    "manifest_version": 2,
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "browser_action": {
        "default_title": "Clickable Badge",
        "default_popup": "popup.html"
    }
}

提前致谢。如果您需要此按钮的html代码,请告诉我。但你可以使用你喜欢的任何按钮。

1 个答案:

答案 0 :(得分:1)

您必须设置内容脚本才能处理点击并将有关该事件的消息发送到后台脚本,这将更改徽章图标文字。

这是解决方案。它适用于Google的Google搜索"按钮。

<强>的manifest.json

{
    "manifest_version": 2,
    "name": "Click counter",
    "version": "1.0.0",

    "content_scripts": [
      {
        "matches": ["https://*/*"],
        "run_at": "document_end",
        "js": ["content-script.js"]
      }
    ],

    "background": {
      "scripts": ["background.js"]
    },

    "browser_action": {
      "default_title": "Click counter"
    }
}

内容-的script.js

document.body.addEventListener('click', e => {
    if(e.target.matches('input[type="submit"]')) { // your button
        chrome.runtime.sendMessage('clicked')
    }
});

<强> background.js

let counter = 0;

chrome.runtime.onMessage.addListener(message => {
    if(message === 'clicked') {
        counter += 1;
        chrome.browserAction.setBadgeText({
            text: counter.toString()
        });
    }
});

不要忘记配置&#34;匹配&#34;您网站的网址。