我有一个 Web 应用程序,它有 2 个 html 页面(与 javascript 文件 js1.js、js2.js 相关的 html1、html2)当我单击 html1 上的按钮时,它将导航到 html2。我知道有办法使用 url 从 html1/js1/js 到 html2/js2.js 传输参数。
是否有一种机制可以设置 j1.js j2.js 都可以访问的变量?(就像 c 中的全局变量)
欢迎评论?
我有一个 Web 应用程序,它有 2 个 html 页面(与 javascript 文件 js1.js、js2.js 相关的 html1、html2)当我单击 html1 上的按钮时,它将导航到 html2。我知道有办法使用 url 从 html1/js1/js 到 html2/js2.js 传输参数。
是否有一种机制可以设置 j1.js j2.js 都可以访问的变量?(就像 c 中的全局变量)
欢迎评论?
这是不可能的,因为每个页面都使用自己的窗口对象命名空间加载。
ie js1.js 中的一个全局变量(在page1.html 中使用)实际上是page1 中window 对象的成员。类似地,page2.html 中的全局变量是该页面窗口对象的成员。这两个窗口对象在某种意义上是完全不同的,没有站点范围的窗口或站点对象可以存储全局变量以供整个站点使用
但是,您可以使用window.localStorage
在站点中的页面之间共享变量/值。
示例:
设定值:
window.localStorage.setItem('myglobal', "hello");
获取价值:
var myglobal = window.localStorage.getItem('myglobal');
变量和值可以通过查询字符串在页面中传递。看看这篇SO 文章。
如果您严格需要创建一个 Javascript 全局变量,那么您必须在两个页面中包含一个公共代码段:
var myGlobalVar;
但这仅代表两个脚本都可以访问的存储。无论如何,您必须设置它的值。
一个骇人听闻的解决方案是将其存储到 window.name 字段中。这在浏览器的同一窗口/选项卡中共享。我个人不喜欢。该变量不应该以这种方式使用。
有库可以保持状态:http ://pablotron.org/?cid=1557
或者,您可以编写自己的代码将变量存储在会话(需要服务器端编程)、HTML5 存储、cookie 等中。
您可以解析window.location.href
以提取参数,在一个页面中设置 cookie 并在另一个页面中检索它们(此处示例),这也需要解析或使用服务器端解决方案。
最有可能的是,如果您在互联网上寻找,您可以找到 URL 和 Cookie 的解析器。