0

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

是否有一种机制可以设置 j1.js j2.js 都可以访问的变量?(就像 c 中的全局变量)

欢迎评论?

4

4 回答 4

4

这是不可能的,因为每个页面都使用自己的窗口对象命名空间加载。

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

但是,您可以使用window.localStorage在站点中的页面之间共享变量/值。

示例

设定值:

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

获取价值:

var myglobal = window.localStorage.getItem('myglobal');
于 2012-10-02T07:39:51.240 回答
1

变量和值可以通过查询字符串在页面中传递。看看这篇SO 文章

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

var myGlobalVar;

但这仅代表两个脚本都可以访问的存储。无论如何,您必须设置它的值。

于 2012-10-02T07:42:11.810 回答
1

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

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

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

于 2012-10-02T07:43:44.957 回答
0

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

最有可能的是,如果您在互联网上寻找,您可以找到 URL 和 Cookie 的解析器。

于 2012-10-02T07:43:23.727 回答