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

我有一个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"
  }
}

这是我的background.html

<html>
    <script>
    function testRequest() {
        console.log("test Request received");
    }
    </script>
</html>

和我的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>

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

Uncaught TypeError: Cannot call method 'testRequest' of null

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

谢谢。


您缺少背景权限,请查看我的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"
  ]
}

编辑:你确定你有相同的文件夹background.html文件作为所有你的扩展名的文件?,如果是这样,尝试从扩展管理页面重新加载你的扩展,我记得有一个错误,我的扩展没有'重新加载,所以我去了我的背景页面的开发工具,并执行window.location.reload(true); 从控制台,修复它。 请回应如果这工作,我会继续研究


这是另一个有更多选择的答案:

chrome.extension.getBackgroundPage()在一段时间后返回null

根据引用的页面(事件和背景页面之间的区别),在仍然使用事件页面的情况下有更好的选择来获取背景:

如果您的扩展使用extension.getBackgroundPage,请切换到runtime.getBackgroundPage。 新方法是异步的,因此它可以在返回之前根据需要启动事件页面。

链接地址: http://www.djcxy.com/p/55829.html

上一篇: Why does chrome.extension.getBackgroundPage() return null?

下一篇: Http Live Streaming on Android 4 (Ice Cream Sandwich)