为什么chrome.extension.getBackgroundPage()返回null?

Ant*_*own 7 google-chrome google-chrome-extension

我有一个manifest.json文件,如下所示:

{
  "name": "Zend Debugger Extension",
  "version": "0.1",
  "background_page": "background.html",
  "permissions": [
    "cookies", "tabs", "http://*/*", "https://*/*"
  ],
  "browser_action": {
    "default_title": "Launch Zend Debugger",
    "default_icon": "icon.png",
    "popup": "popup.html"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的background.html:

<html>
    <script>
    function testRequest() {
        console.log("test Request received");
    }
    </script>
</html>
Run Code Online (Sandbox Code Playgroud)

还有我的popup.html:

<script>
function debug(target) {
    if (target.id == 'thisPage') {
        console.log('sending request');
        chrome.extension.getBackgroundPage().testRequest();
    }
}
</script>

<div onclick="debug(this)" id="thisPage">Current Page</div>
Run Code Online (Sandbox Code Playgroud)

但是,background.html页面似乎无法访问.我收到这个错误:

Uncaught TypeError: Cannot call method 'testRequest' of null
Run Code Online (Sandbox Code Playgroud)

当我检查时,chrome.extension.getBackgroundPage()我得到一个空值.我在想我的清单文件中犯了一个错误,但我看不出我做错了什么.

谢谢.

ElH*_*ker -1

您缺少后台权限,请查看我的 chrome 扩展程序的 manifest.json 文件:

{
    "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["jquery.js", "asserts.js"]
    }
  ],
  "name": "Test Extension",
  "version": "1.0",
  "description": "A test extension to inject js to a webpage.",
  "background_page": "background.html",
  "options_page": "options.html",
  "browser_action": {
    "default_icon": "icon.png",
    "popup": "popup.html"
  },
  "permissions": [
    "tabs", 
    "http://*/*", "https://*/*", "<all_url>", "background"
  ]
}
Run Code Online (Sandbox Code Playgroud)

编辑: 您确定该background.html文件与所有 chrome 扩展程序的文件位于同一文件夹中吗?如果是这样,请尝试从扩展程序管理页面重新加载您的扩展程序,我记得曾经有一个错误,我的扩展程序没有重新加载,所以我进入了后台页面的开发人员工具并window.location.reload(true);从控制台执行,修复了它。如果有效请回复,我会继续研究

  • “后台”权限与扩展程序的工作方式无关。此权限用于从用户会话开始时在后台持续运行扩展。 (12认同)