2017-04-20 66 views
0

我是JavaScript的初学者。我打开一个html页面,其中的JavaScript文件有一个全局变量tokenjavascript中的全局变量不起作用

在JavaScript文件,我使用的代码打开另一个HTML链接上的一些条件:

if(data.status==="Success"){ 
    window.open("http://172.19.101.65:8001/","_self") 
} 

上述HTML链接,取其加载的JavaScript文件中现在,我不能够访问价值代币通过window.token

我不确定我的方法是对还是错。我会感谢帮助。

+1

“窗口”只是当前窗口/选项卡,如果你想在它们之间共享数据,那么你可以将它们作为查询参数添加到URL中,或者将它们存储在某些客户端 - 端存储(cookies/localstorage)。只注意到你正在使用'_self',这将打开该链接作为当前页面,有效地清除你设置的任何全局JS变量。 – George

+0

感谢您的回复。我无法将该标记作为URL中的查询参数传递。我如何在客户端存储中执行此操作? –

+0

看看[这里](https://www.w3schools.com/html/html5_webstorage。asp)(或者看看下面的几个答案),如果你想使用localstorage,它应该指向你正确的方向。请注意这是[不支持一些旧的浏览器](http://caniuse.com/#search=localstorage) – George

回答

0

您可以使用本地存储取,跨页工作

设置项:localStorage.setItem('token','value')

获取项目:localStorage.getItem('token')

PS:您也可以使用cookie。几乎每个浏览器都适用并支持;)

+0

您可以分享信息如何cookies谢谢:) –

+0

我可以写一个答案,但它有解释在这里:http://stackoverflow.com/questions/14573223/set-cookie-and-get-cookie-with-javascript – Tushar

0

你应该可以通过下面的代码访问弹起靶父窗口的变量,如果父窗口是打开

parent.window.token 

因为你是加载与目标的新窗口“_self”你以前的窗口被关闭, parent.window数据不可访问。

我建议在你的情况下通过localstorage,cookie或querystrings传递令牌。或者在空目标上打开新窗口,然后在访问父代的标记后关闭它的父代。

0

你可以试试下面的代码

var opener = window.opener; 
if(opener) { 
    var oDom = opener.document; 
    var elem = oDom.getElementById("your element"); 
    if (elem) { 
     var val = elem.value; 
    } 
} 
0

因为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

+0

它不适合我,我得到的值为null :( –

+0

检查里面的铬开发工具,在应用程序选项卡,在本地存储中,如果您找到密钥“标记”,如果没有,则在调用setItem()时发生错误,请记住在调用window.open – Karim

+0

之前设置标记,以便本地存储可用第二个URL与第一个URL有相同的IP和端口?..谢谢 –