2017-04-20 54 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和端口?..謝謝 –