我正在尝试使用chrome.extension.getBackgroundPage
功能访问我的分机的后台页面。
但是,我收到以下错误:
未捕获的TypeError:chrome.extension.getBackgroundPage不是函数
我从我的bar.js
文件中调用该函数,该文件在web_accessible_resource
manifest.json
如何让它发挥作用?
的manifest.json
{
"manifest_version": 2,
"name": "XPath Helper",
"version": "1.0.13",
"description": "Extract, edit, and evaluate XPath queries with ease.",
"background": {
"page": "background.html"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["content.css"],
"js": ["content.js"]
}
],
"permissions": ["http://*/", "tabs", "identity", "identity.email"],
"icons": {
"32": "static/icon32.png",
"48": "static/icon48.png",
"128": "static/icon128.png"
},
"web_accessible_resources": [
"bar.css",
"bar.html",
"bar.js"
]
}
bar.js 是bar.html
内的脚本(不是内容脚本):
// ...
document.addEventListener('DOMContentLoaded',function(){
// previosuly chrome.extension.getBackgroundPage()
chrome.runtime.getBackgroundPage(function(page){
alert("hello");
})
})
content.js
// ...
this.barFrame_ = document.createElement('iframe');
this.barFrame_.src = chrome.extension.getURL('bar.html');
document.body.appendChild(this.barFrame_);
// ...
答案 0 :(得分:6)
如果页面在扩展程序中运行,则大多数扩展程序API只能 ,即顶级框架是非sandboxed chrome-extension:
页面。
chrome-extension:
- 非扩展程序中的框架只能访问content scripts和网页可用的扩展程序API。与内容脚本不同,它们还可以在扩展程序的原点使用Web平台API。例如,如果在内容脚本中使用localStorage
,则访问运行内容脚本的页面的DOM存储。如果您在localStorage
页面中使用chrome-extension:
,那么您将获得扩展程序的存储空间。
如果要访问框架中背景页面的功能,请使用extension messaging APIs在框架和背景页面之间进行通信。