Kuz*_*gun 5 variables google-chrome google-chrome-extension
我想做一个简单的扩展,它将一个变量从后台传递给弹出窗口.问题是,我得到了"未定义"的回应.
表现:
{
"name": "Get var",
"description": "get var",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"browser_action": {
"default_title": "Get that variable",
"default_popup": "popup.html"
},
"manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)
background.js
var myURL = 'aaa';
Run Code Online (Sandbox Code Playgroud)
popup.html
<!doctype html>
<html>
<head>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
popup.js
document.addEventListener('DOMContentLoaded', function () {
var bg = chrome.extension.getBackgroundPage();
var myURL = bg.myURL;
alert(myURL)
});
Run Code Online (Sandbox Code Playgroud)
您的代码(正如您在问题中发布的那样)是正确的,应该可以正常工作.(事实上,当我使用您提供的代码创建示例扩展时,它确实按预期工作.)
您在复制粘贴实际代码时意外更改了某些内容,或者还有其他东西搞乱了(您从帖子中遗漏了一些内容) ).
顺便说一下,我建议查看更加资源友好的事件页面(即非持久性背景页面).请记住,移动到事件页面需要进行一些更改才能使代码正常工作:
document.addEventListener('DOMContentLoaded', function () {
chrome.runtime.getBackgroundPage(function (bg) {
var myUrl = bg.myUrl;
alert(myUrl);
});
});
Run Code Online (Sandbox Code Playgroud)
注意:我不以任何方式暗示您收到的原因undefined是您使用持久性背景页面.您发布的代码应该可以在持久的后台页面中正常工作 - 使用事件页面(只要有可能)这是更好的做法.
Kuz*_*gun -3
最后我发现了问题,我读到后台页面需要后台权限才能工作(这里是 chrome 扩展权限文档)。所以我像这样改变了清单:
{
"name": "Get var",
"description": "get var",
"version": "2.0",
"permissions": [
"activeTab,background"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"browser_action": {
"default_title": "Get that variable",
"default_popup": "popup.html"
},
"manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6757 次 |
| 最近记录: |