javascript中的全局变量不起作用
我是JavaScript的初学者。我打开一个html页面,其中的JavaScript文件有一个全局变量token
。javascript中的全局变量不起作用
在JavaScript文件,我使用的代码打开另一个HTML链接上的一些条件:
if(data.status==="Success"){
window.open("http://172.19.101.65:8001/","_self")
}
上述HTML链接,取其加载的JavaScript文件中现在,我不能够访问价值代币通过window.token
。
我不确定我的方法是对还是错。我会感谢帮助。
您可以使用本地存储取,跨页工作
设置项:localStorage.setItem('token','value')
获取项目:localStorage.getItem('token')
PS:您也可以使用cookie。几乎每个浏览器都适用并支持;)
您可以分享信息如何cookies谢谢:) –
我可以写一个答案,但它有解释在这里:http://*.com/questions/14573223/set-cookie-and-get-cookie-with-javascript – Tushar
你应该可以通过下面的代码访问弹起靶父窗口的变量,如果父窗口是打开
parent.window.token
因为你是加载与目标的新窗口“_self”你以前的窗口被关闭, parent.window数据不可访问。
我建议在你的情况下通过localstorage,cookie或querystrings传递令牌。或者在空目标上打开新窗口,然后在访问父代的标记后关闭它的父代。
你可以试试下面的代码
var opener = window.opener;
if(opener) {
var oDom = opener.document;
var elem = oDom.getElementById("your element");
if (elem) {
var val = elem.value;
}
}
因为window.open
使这样的执行上下文与附加到全局对象中所有变量togheter失去了重定向(你的情况window.token
)
https://developer.mozilla.org/en-US/docs/Web/API/Window/open
你可以做的是通过令牌作为URL的一部分,或者使用本地存储
window.localStorage.setItem('token', window.token);
,然后尽快在页面加载
var token = window.localStorage.getItem('token');
https://developer.mozilla.org/it/docs/Web/API/Window/localStorage
它不适合我,我得到的值为null :( –
检查里面的铬开发工具,在应用程序选项卡,在本地存储中,如果您找到密钥“标记”,如果没有,则在调用setItem()时发生错误,请记住在调用window.open – Karim
之前设置标记,以便本地存储可用第二个URL与第一个URL有相同的IP和端口?..谢谢 –
“窗口”只是当前窗口/选项卡,如果你想在它们之间共享数据,那么你可以将它们作为查询参数添加到URL中,或者将它们存储在某些客户端 - 端存储(cookies/localstorage)。只注意到你正在使用'_self',这将打开该链接作为当前页面,有效地清除你设置的任何全局JS变量。 – George
感谢您的回复。我无法将该标记作为URL中的查询参数传递。我如何在客户端存储中执行此操作? –
看看[这里](https://www.w3schools.com/html/html5_webstorage。asp)(或者看看下面的几个答案),如果你想使用localstorage,它应该指向你正确的方向。请注意这是[不支持一些旧的浏览器](http://caniuse.com/#search=localstorage) – George