我想做一个简单的扩展,它将一个变量从后台传递到弹出窗口。问题是,我得到“未定义”的回应。
显现:
{
"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
}
背景.js
var myURL = 'aaa';
弹出窗口.html
<!doctype html>
<html>
<head>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
弹出窗口.js
document.addEventListener('DOMContentLoaded', function () {
var bg = chrome.extension.getBackgroundPage();
var myURL = bg.myURL;
alert(myURL)
});
最佳答案
您的代码(正如您在问题中发布的一样)是正确的,应该可以正常工作。 (事实上,当我使用您提供的代码创建示例扩展时,它确实按预期工作。)
您要么在复制粘贴实际代码时不小心更改了某些内容,要么有其他事情将事情搞砸了(您在帖子中遗漏了某些内容)。
顺便说一句,我建议查看 event-pages (即非持久性背景页面)更资源友好。请记住,移动到事件页面需要进行一些更改才能使代码正常工作:
document.addEventListener('DOMContentLoaded', function () {
chrome.runtime.getBackgroundPage(function (bg) {
var myUrl = bg.myUrl;
alert(myUrl);
});
});
备注 : 我不以任何方式暗示您收到
undefined
的原因是你使用了一个持久的背景页面。您发布的代码应该适用于持久的背景页面 - 使用事件页面(只要可能)是更好的做法。
关于google-chrome - 将变量从后台传递到 Chrome 扩展程序上的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570319/