2017-04-20 8 views
0

JavaScriptの初心者です。 JavaScriptファイルのグローバル変数がtokenのhtmlページを開きます。 JavaScriptファイルでJavaScriptのグローバル変数が機能しない

、私は、コードを使用して、いくつかの条件に別のHTMLリンクを開封しております:

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

今すぐロードされた方上記のHTMLリンクのJavaScriptファイルで、私はアクセスすることはできませんよ値トークンはwindow.tokenです。

私のアプローチが正しいかどうかはわかりません。私は助けに感謝します。

+1

'window'は現在のウィンドウ/タブのみです。それらの間でデータを共有したい場合は、それらをURLのクエリパラメータとして追加するか、またはクライアント側で保存することができます。 (クッキー/ローカルストレージ)。 '_self'を使用していることに気付いただけで、現在のページとしてそのリンクが開かれ、あなたが設定したグローバルなJS変数が効果的にクリアされます。 – George

+0

返信ありがとうございます。トークンをURLのクエリパラメータとして渡すことはできません。クライアントのストレージではどうすればいいですか? –

+0

[こちら](https://www.w3schools.com/html/html5_webstorage)をご覧ください。asp)(または以下の答えをいくつか見てください)、localstorageを使用したい場合は正しい方向に指すべきです。それは[古いブラウザではサポートされていない](http://caniuse.com/#search=localstorage) – George

答えて

0

を使用できローカルストレージ

var token = window.localStorage.getItem('token'); 
ロードされているとして、それをフェッチ:ページにわたって作業

設定項目:localStorage.setItem('token','value')

商品を取得する:localStorage.getItem('token')

PS:クッキーを使用することもできます。

+0

ありがとう:) –

+0

私は答えを書くことができますが、ここに説明があります:http://stackoverflow.com/questions/14573223/set-cookie-and-get-cookie-with-javascript – Tushar

0

親ウィンドウが開いている場合は、ポップアップターゲットに次のコードを経由して、親ウィンドウの変数にアクセスすることができるはず

あなたは「_self」は、あなたの前のウィンドウを閉じますように、ターゲットと新しいウィンドウをロードしているので
parent.window.token 

とparent.windowデータにはアクセスできません。

トークンをlocalstorage、cookieまたはquerystrings経由で渡すことをおすすめします。空のターゲットに新しいウィンドウを開き、親のトークンにアクセスした後で親を閉じます。

0

あなたはwindow.openは、このようにあなたの実行コンテキストは、(あなたのケースwindow.tokenに)グローバルオブジェクトに追加すべての変数でtogheter失われたリダイレクトしますので、あなたがトークン変数にアクセスすることはできませんコード

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

次試すことができます

あなたは何ができるか

https://developer.mozilla.org/en-US/docs/Web/API/Window/open

はURLの一部としてトークンを渡すか、またはローカルストレージを使用している

その後、
window.localStorage.setItem('token', window.token); 

とすぐにページが

https://developer.mozilla.org/it/docs/Web/API/Window/localStorage

+0

私のために働いていない、私はnullとして値を取得しています:( –

+0

クロム開発ツールのチェック[アプリケーション]タブの[ローカルストレージ]の下にある[トークン]キーを見つけた場合、setItem()を呼び出したときにエラーが発生していない場合は、トークンを設定してください。 – Karim

+0

2番目のURLも最初のURLと同じIPとポートを持っていますか?..ありがとう –

関連する問題