我有一个 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()
时,我得到一个空值。我想我的清单文件中有错误,但我看不出我做错了什么。
感谢。
答案 0 :(得分:3)
这是另一个有更多选择的答案:
chrome.extension.getBackgroundPage() returns null after awhile
根据引用页面(事件与事件之间的差异) 背景页面)有更好的选择来获得背景 仍然使用事件页面:
如果您的扩展程序使用extension.getBackgroundPage,请切换到 而是运行run.getBackgroundPage。较新的方法是异步的 如果有必要,它可以在返回之前启动事件页面。
答案 1 :(得分:0)
您缺少后台权限,请查看我的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"
]
}
修改强>
您确定在与所有Chrome扩展程序的文件相同的文件夹中有background.html
文件吗?如果是,请尝试从扩展程序管理页面重新加载扩展程序,我记得曾经有一个错误,我的扩展程序没有'重新加载,所以我去了我的后台页面的开发人员工具,并从控制台执行了window.location.reload(true);
,修复了它。如果有效,请回复,我会继续研究