我的 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/