javascript - 使用 getBackgroundPage() 给我 : Object [object Window] has no method 'getFromStorage'

标签 javascript google-chrome google-chrome-extension

我的 background.js 中有这个:

var write = function (line) {
  if (localStorage["silent"] == true) {
    chrome.extension.getBackgroundPage().console.log(line);
  } else {
    alert(line);
  }
}
var getFromStorage = function (item, default) {
  if (localStorage[item] == undefined) {
    write("Could not find " + item + " in local storage...");
    return default;
  } else {
    return localStorage[item];
  }
}

var isOn = getFromStorage("isOn", true);
var silent = getFromStorage("silent", false);

这在我的 popup.js 中:

var bgPage = chrome.extension.getBackgroundPage();
var isOn = bgPage.getFromStorage("isOn", true);
var silent = bgPage.getFromStorage("silent", false);

我得到这个错误:

Object [object Window] has no method 'getFromStorage'

非常感谢帮助,谢谢:)

最佳答案

您应该更改后台脚本中的默认参数

  var write = function (line) {
    if (localStorage["silent"] == true) {
      chrome.extension.getBackgroundPage().console.log(line);
    } else {
      alert(line);
    }
  }
  var getFromStorage = function (item, d) {
    if (localStorage[item] == undefined) {
      write("Could not find " + item + " in local storage...");
      return d;
    } else {
      return localStorage[item];
    }
  }

  var isOn = getFromStorage("isOn", true);
  var silent = getFromStorage("silent", false);

因为default在javascript中是保留的。 (它与 Switch statement 结合使用)
因此,后台页面根本不会加载,检查它应该会导致这样的事情 Uncaught SyntaxError: Unexpected token default at background.js:8

然后导致错误 Object [object Window] has no method 'getFromStorage' 在您的弹出脚本中,因为 getFromStorage 实际上从未加载到您的后台脚本中,因为在第 8 行终止

关于javascript - 使用 getBackgroundPage() 给我 : Object [object Window] has no method 'getFromStorage' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767441/

相关文章:

javascript - 对象作为 react 子错误无效。找到带键的对象()

javascript - 无法在 Django 中使用 jquery 禁用按钮

javascript - DOM 监听器的实现

javascript - 内容脚本中的 Chrome 扩展 storage.sync.set 抛出异常

google-chrome-extension - 使用 iframe 的 chrome 扩展登录安全

javascript - 如何将 math.max 缩减为对象数组

javascript - 导航栏切换按钮不起作用

javascript - 获取 Angular 范围并通过 Chrome 应用更改

python - 如何在 Chrome 驱动程序中使用 Selenium 重用预加载的图像?

google-chrome - 如何使用 clients2.google.com 下载 CRX?