为什么我没有在chrome.runtime中定义getBackgroundPage()?

Cur*_*cco 1 javascript google-chrome google-chrome-extension

我试图chrome.runtime.getBackgroundPage()从我的内容脚本访问,但我得到:

未捕获的TypeError:chrome.runtime.getBackgroundPage不是函数(匿名函数)@ VM11844:1InjectedScript._evaluateOn @ VM11665:883InjectedScript._evaluateAndWrap @ VM11665:816InjectedScript.evaluateOnCallFrame @ VM11665:942window.onload @ run.js:101

这是我的manifest.json的样子:

{
  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },
  "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["run.js"],
    "run_at": "document_start"
  }],
  "description": "Hello world!",
  "homepage_url": "https://tryprospect.com",
  "icons": {
    "16": "icons/16x16.png"
  },
  "manifest_version": 2,
  "name": "Hello world",
  "permissions": ["storage", "management"],
  "version": "v0.1",
  "web_accessible_resources": ["html/*"]
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?也许是许可?

谢谢!

rsa*_*hez 6

大多数chrome.*API不适用于内容脚本.它们只能用于您定义的背景或事件页面,弹出窗口或其他扩展视图.

特别是您无法使用,chrome.runtime.getBackgroundPage()因为扩展的窗口对象与内容脚本位于不同的进程中.内容脚本与扩展的其余部分之间进行通信的唯一方法是通过消息传递或存储.