如何在Windows8应用商店的Javascript/HTML5中设置全局变量

如何在Windows8应用商店的Javascript/HTML5中设置全局变量,javascript,windows-8,Javascript,Windows 8,我想在.js文件中使用全局变量。 比如说, 当我在a.js+a.html中读取文件内容并保存到某个变量“fileContent”中时 然后我还想在b.js+b.html中使用“fileContent” 另外,当我在b.js+b.html中更改“fileContent”时,这应该会影响a.js+a.html中的“fileContent” 我该怎么办 谢谢。使用本地存储。 以一种方式: 在B中: 或者像访问任何其他对象一样访问本地存储: localStorage.fileContent = "val

我想在.js文件中使用全局变量。 比如说,

当我在a.js+a.html中读取文件内容并保存到某个变量“fileContent”中时

然后我还想在b.js+b.html中使用“fileContent”

另外,当我在b.js+b.html中更改“fileContent”时,这应该会影响a.js+a.html中的“fileContent”

我该怎么办

谢谢。

使用本地存储。 以一种方式:

在B中:

或者像访问任何其他对象一样访问本地存储:

localStorage.fileContent = "value";
但是,请记住,localStorage会将所有值转换为字符串,这包括对象和数组。要设置/获取这些,您需要分别使用JSON.stringify和JSON.parse:

localStorage.setItem('fileContent', JSON.stringify([1,2,3,4,5,6,7]));
var fileContent = JSON.parse(localStorage.getItem('fileContent'));

您还可以使用应用程序设置:

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings;
var composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

localSettings.values["exampleCompositeSetting"] = composite;

在这里您可以找到更多信息:

鉴于Windows 8应用程序的体系结构是单页模式,您不需要浏览浏览器,只需加载HTML片段并将其插入当前文档,这非常简单。然而,我建议使用一些类型,而不是仅仅使用一个裸露的全局变量

文件A globals.js:

WinJS.Namespace.define("MyGlobals",  {
    variableA: null,
});
在WinJS包含之后,在default.html的顶部包含此内容

文件B.js:

// your other code
...
MyGlobals.variableA = getValueFromSomewhere();
文件C b.html或C.js:

// your other code
...
printSomethingAwesomeFromData(MyGlobals.variableA);

例如,您可以轻松定义变量并将其用作全局变量

WinJS.Namespace.define("MyGlobals", {i: 0,k:5    })
为了进行检查,您可以添加一个事件侦听器,如

div1.addEventListener('click', divClickEvent);

function divClickEvent() {
        MyGlobals.i++;
        MyGlobals.k++;
        console.log("ValueOf_i____" + MyGlobals.i);
        console.log("ValueOf_k____" + MyGlobals.k);
    }

我对Windows8不太清楚,但是你可以在Javascript中使用类似localStorage或sessionStorage的存储方式谢谢你的解决方案!但是有什么方法可以使用定义的变量吗?我的意思是在C.js中定义的“fileContent”变量,并在a.js和b.js中使用该变量?@klados:仅当您想在同一个.html页面上使用这些变量时。否则,您将不得不依赖localStorage或cookies。localSettings?那是什么?我忘了加密码了。现在就对了。请查看链接以获取更多信息。applicationData?我想您忘记了var applicationData=Windows.Storage.applicationData.current;我有一些问题。我确实喜欢这个代码。但是,variableA的值不能在c.js中使用,我的目标是制作一个WinJS.binding.list;可以在b.js和c.js中共享的变量我的代码如下:[global.js]包含在default.html->WinJS.Namespace.defineMyGlobals,{varA:null,};[b.js]MyGlobals.varA=新的WinJS.binding.list;和MyGlobal.varA.push{title:varTitle,desc:varDesc};[c.js]var theTitle=MyGlobal.varA.getAt0.title;在这里,当我调试c.js时,MyGlobal.varA似乎没有定义。这意味着b.js和c.js中的变量是不同的,即使变量名MyGlobal.varA是相同的@多米尼克·霍普顿
WinJS.Namespace.define("MyGlobals", {i: 0,k:5    })
div1.addEventListener('click', divClickEvent);

function divClickEvent() {
        MyGlobals.i++;
        MyGlobals.k++;
        console.log("ValueOf_i____" + MyGlobals.i);
        console.log("ValueOf_k____" + MyGlobals.k);
    }