不同javascript文件的全局变量

时间:2012-10-02 07:37:32

标签: javascript

我有一个网络应用程序,它有2个html页面(html1,html2与javascript文件js1.js相关,js2.js) 当我单击html1上的按钮时,它将导航到html2。 我知道有一种方法是使用url从html1 / js1 / js转移参数到html2 / js2.js。

是否存在设置j1.js j2.js可以访问的变量的机制?(喜欢c中的全局变量)

欢迎任何评论?

4 个答案:

答案 0 :(得分:4)

这不可能直接实现,因为每个页面都加载了自己的窗口对象命名空间。

即。 js1.js中的全局变量(在page1.html中使用)实际上是page1中window对象的成员。类似地,page2.html中的全局变量是该页面窗口对象的成员。 2个窗口对象在某种意义上是完全不同的没有可以存储全局变量以在整个站点中使用的站点范围窗口站点对象

但是,您可以使用window.localStorage在您网站的网页上分享变量/值。

示例

设定值:

window.localStorage.setItem('myglobal', "hello");

获得价值:

var myglobal = window.localStorage.getItem('myglobal');

答案 1 :(得分:1)

变量和值可以通过querystring传递给页面。 看看这个SO article

如果您确实需要创建一个Javascript全局变量,那么您必须在两个页面中都包含一个公共代码段:

var myGlobalVar;

但这只代表两个脚本都可以访问的存储。无论如何你必须设定它的价值。

答案 2 :(得分:1)

一个hackish解决方案是将它存储到window.name字段中。这在浏览器的同一窗口/选项卡中共享。 我个人不喜欢它。该变量并不意味着以这种方式使用。

有一些库可以保持状态:http://pablotron.org/?cid=1557

或者,您可以编写自己的代码来将变量存储在会话中(需要服务器端编程),HTML5存储中,cookie中等。

答案 3 :(得分:0)

您可以解析window.location.href以提取参数,在一个页面中设置Cookie并在另一个页面中检索它们(example here),这也需要解析或使用服务器端解决方案。

最有可能的是,如果你在interwebs中寻找,你可以找到URL和Cookies的解析器。