google-chrome - 将变量从后台传递到 Chrome 扩展程序上的弹出窗口

标签 google-chrome variables 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
}

背景.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/

相关文章:

javascript - 如何使我的 .htaccess 文件允许 Safari 和其他浏览器打开 GZIP?

canvas - chrome扩展 Canvas 不在循环内绘制图像

javascript - 查找不在网络历史记录中的上一页的 URL

google-chrome - 在Chrome DevTools中测量整页大小

javascript - 为什么我不能在 Chrome(和 Safari)中将 console.log 作为回调参数传递?

python - WebDriver异常: Message: unknown error: Chrome failed to start: exited abnormally with ChromeDriver Chrome and Selenium on debian server

string - BATCH CMD - 读取具有特殊字符的 INI 文件

c - 变量声明的行为如何?

variables - 批处理脚本: how to get parent dir name without full path?

html - Unicode 图标 : sometimes looks like a wrong encoding