Background.js无法使用Chrome扩展程序

use*_*920 7 javascript google-chrome google-chrome-extension

我是Chrome扩展程序的新手,似乎无法弄清楚背景概念是如何工作的.我正在构建一个计数器扩展,即使用户关闭扩展(但不是浏览器),并且想要做一个简单的测试,看看我是否可以弄清楚如何使用后台文件.下面是我尝试创建一个功能,每当用户点击选项卡(我的扩展名之外)时激活该功能,当他们点击5个选项卡时,警报就会响起.我无法弄清楚为什么这不起作用.

background.js:

var counter = 0;
chrome.browserAction.onClicked.addListener(function(tab){
  counter++;
  if (counter == 5) {
    alert("Hi");
  }
});
Run Code Online (Sandbox Code Playgroud)

manifest.json的:

 {
  "name": "Hello World!",
  "description": "My first packaged app.",
  "version": "0.1",
  "permissions": ["tabs", "http://*/*"],
  "manifest_version":2,
  "content_scripts": [ {
    "js": [ "jquery-1.9.1.js", "myscript.js" ],
    "matches": [ "http://*/*", "https://*/*"]
  }],
  "background": {
    "scripts": [
       "background.js"
    ]
  },
  "browser_action": {
    "default_title": "10,000 Hours",
    "default_icon": "icon16.png",
    "default_popup": "index.html"
  },
  "icons": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  }
}
Run Code Online (Sandbox Code Playgroud)

Sud*_*han 10

它通过以下代码为我工作.

的manifest.json

{
    "name": "Popping Alert",
    "description": "http://stackoverflow.com/questions/15194198/background-js-not-working-chrome-extension",
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "version": "1",
    "manifest_version": 2,
    "browser_action": {
        "default_title": "Click Me"
    }
}
Run Code Online (Sandbox Code Playgroud)

background.js

var counter = 0;
chrome.browserAction.onClicked.addListener(function (tab) {
    counter++;
    if (counter == 5) {
        alert("Hey !!! You have clicked five times");
    }
});
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以分享您的相关代码或清楚地提出您的问题陈述吗?

  • @ user1987920:你的清单里有**`default_popup`**?如果是这样代码将无法正常工作! (4认同)
  • @ user1987920:**`chrome.browserAction.onClicked`**如果浏览器操作有弹出窗口将不会触发,你必须使用消息传递来获得计数器运行 (3认同)
  • @ user1987920:如果你想从弹出页面进行操作不需要,你可以使用[**`chrome.extension.getBackgroundPage`**](https://developer.chrome.com/extensions/extension.html#method- getBackgroundPage)获取访问**`var counter = 0;`**并从弹出页面更新它 (2认同)
  • 为什么没有打印 consolge 日志?console.log("counter="+counter); (2认同)