我发送变量 newUser
来自 options.html
至 background.html
与 chrome.extension.getBackgroundPage()
像这样
document.getElementById("save").addEventListener(
"click", function ()
{
var newUser = document.getElementById("getEmail").value;
var bkg = chrome.extension.getBackgroundPage();
bkg.saveNewUser(newUser);
console.log("newUser " + newUser);
} , false)
在background.html
我有
function saveNewUser (newUser)
{
newUser = newUser; //this should be global?
console.log("newUser from options page " + newUser);
}
console.log("newUser from options page " + newUser);
但是newUser
是函数的局部。我的理解是,如果一个变量保存在一个没有关键字 var
的函数中它应该是全局性的。但在这种情况下并非如此。 console.log
函数外抛出 Uncaught ReferenceError: newUser is not defined
错误。
我做错了什么以及如何修复范围以使用 newUser
函数外?
谢谢。
编辑
我在 background.html
中尝试了以下内容但我仍然收到 newUser 未定义错误:
var extension_user
function saveNewUser (newUser)
{
extension_user = newUser; //this should be global
console.log("extension_user from options page " + extension_user);
}
console.log("extension_user from options page " + extension_user);
更新
我更改了两个页面以反射(reflect)答案和评论,但仍然在函数之外,变量未定义。我做错了什么?
options.html
document.getElementById("save").addEventListener(
"click", function ()
{
var newUserEmail = document.getElementById("getEmail").value;
var bkg = chrome.extension.getBackgroundPage();
bkg.saveNewUser(newUserEmail);
console.log("newUserEmail " + newUserEmail);
} , false)
background.html
var newUser
function saveNewUser (newUserEmail)
{
window.newUser = newUserEmail; //this should be global
console.log("newUser from options page inside function" + newUser);
}
console.log("newUser from options page " + newUser);
最佳答案
如果要将其保存为全局变量,可以在函数中更改变量名:
function saveNewUser (newUserVar)
{
newUser = newUserVar; //this should be global?
console.log("newUser from options page " + newUserVar);
}
console.log("newUser from options page " + newUser);
或者您可以使用窗口范围(与全局范围相同):
function saveNewUser (newUser)
{
window.newUser = newUser; //this should be global?
console.log("newUser from options page " + newUser);
}
console.log("newUser from options page " + newUser);
所有全局变量本质上都是窗口对象的属性。
关于javascript - 如何使函数内定义的变量 newUser 成为全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904144/