我想做一个简单的扩展,它将一个变量从后台传递给弹出窗口.问题是,我得到了"未定义"的回应.
表现:
{ "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 }
background.js
var myURL = 'aaa';
popup.html
popup.js
document.addEventListener('DOMContentLoaded', function () { var bg = chrome.extension.getBackgroundPage(); var myURL = bg.myURL; alert(myURL) });
gkalpak.. 7
您的代码(正如您在问题中发布的那样)是正确的,应该可以正常工作.(事实上,当我使用您提供的代码创建示例扩展时,它确实按预期工作.)
您在复制粘贴实际代码时意外更改了某些内容,或者还有其他东西搞乱了(您从帖子中遗漏了一些内容) ).
顺便说一下,我建议查看更加资源友好的事件页面(即非持久性背景页面).请记住,移动到事件页面需要进行一些更改才能使代码正常工作:
document.addEventListener('DOMContentLoaded', function () { chrome.runtime.getBackgroundPage(function (bg) { var myUrl = bg.myUrl; alert(myUrl); }); });
注意:我不以任何方式暗示您收到的原因undefined
是您使用持久性背景页面.您发布的代码应该可以在持久的后台页面中正常工作 - 使用事件页面(只要有可能)这是更好的做法.