javascript変数を永久に変更することはできますか?のように、私は変数Xを設定し、1に等しくする。ボタンのonClickはその変数を2に変更する。どのようにして、その変数をページの更新時に2にとどめることができるか?ページ更新後にJS変数に値を保持させるにはどうすればよいですか?
答えて
これはwindow.localStorage
(又はwindow.sessionStorage
)で可能です。違いは、ブラウザが開いたままである限り、sessionStorage
が続くことです。localStorage
は、ブラウザの再起動後も存続します。永続性は、ウェブサイト全体に適用されます()。
あなたは、次のページ(複数可)に反映されるべき変数を設定する必要があり、使用:
var someVarName = "value";
localStorage.setItem("someVarName", someVarName);
そして、(ページが読み込まれたときのように)任意のページでは、それが好き得る:
何値が格納されていない場合var someVarName = localStorage.getItem("someVarName");
.getItem()
はnull
を返すか、または値が格納されています。
このストレージには文字列値のみを格納できますが、これはJSON.stringify
とJSON.parse
を使用することで解決できます。技術的には、.setItem()
に電話するたびに、.toString()
を呼び出してその値を保存します。
MDNのDOMストレージガイド(下記にリンクしています)は、回避策/ポリフィルを持っていて、localStorage
が利用できない場合、クッキーのようなものに落ちます。
オブジェクトリテラルや配列などのデータ型を保存する機能を抽象化する既存のミニライブラリを作成するのは悪いことではありません。
参考文献:
- ブラウザ
Storage
からhttps://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage localStorage
- https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorageJSON
からhttps://developer.mozilla.org/en-US/docs/JSON- ブラウザーストレージの互換性 - http://caniuse.com/namevalue-storage
- は、オブジェクトを格納する - Storing Objects in HTML5 localStorage
ページを更新するときに値を保存するには、Cookieを使用する必要があります。あなたは、あなたがlocalStorage/sessionStorage
例のようにStorage API考えることができる唯一のHTML5をサポートしたい場合は、this one
のように、クッキーへのアクセスを簡単にするために、多くのJavaScriptベースのクッキーライブラリのいずれかを使用することができます。localStorageを使用してそしてcookies library
var mode = getStoredValue('myPageMode');
function buttonClick(mode) {
mode = mode;
storeValue('myPageMode', mode);
}
function storeValue(key, value) {
if (localStorage) {
localStorage.setItem(key, value);
} else {
$.cookies.set(key, value);
}
}
function getStoredValue(key) {
if (localStorage) {
return localStorage.getItem(key);
} else {
return $.cookies.get(key);
}
}
おかげで私はそれが働くようになった! –
あなたは、クライアント側のクッキーを格納することによってそれを行うことができます。
クッキーに加えて、localStorage
には、「半永続的」クライアントデータを格納できる場所が少なくとも1つあります。window.name
。 window.name
に割り当てる文字列の値は、ウィンドウが閉じられるまでそこにとどまります。
これをテストするには、コンソールを開いてwindow.name = "foo"
と入力し、ページを更新してwindow.name
と入力してください。 foo
と応答する必要があります。
これはちょっとしたハックですが、何らかの理由(従来のクライアント)でlocalStorage
を使用できない場合は不要なデータがサーバーに送信されるのを防ぐため、考慮すべき選択肢かもしれない。
window.name
には別の興味深いプロパティがあります。これは他のドメインから提供されたウィンドウに表示されます。それはwindow
のほぼすべての他の財産のような同じ起源の政策の対象ではありません。したがって、ユーザーがページを移動またはリフレッシュしている間に半永久的なデータを保存することに加えて、CORSフリーのクロスドメイン通信にも使用できます。
window.name
は文字列を格納することができますが、利用可能度はJSON
であり、複雑なデータでもそれほど大きな問題ではありません。
私はあなたがここに潜入しているのを見て... http: //stackoverflow.com/questions/10567847/window-name-as-a-data-transport-a-valid-approach :) – Ian
@Ian lol、良いキャッチ。なぜかわからないけど、私は 'window.name'に魅了されています。 –
私は今非常に興味があります!それはおなじみのようですが、私はこの機能について知りませんでした。私は 'name.'を' window.open'で設定することを知っていましたが、それは私がそれを取った限りです – Ian
- 1. ブラウザを更新した後でフォームの値を保持するにはどうすればよいですか?
- 2. JS変数を変更した後、BabylonJSシーンを更新するにはどうすればいいですか?
- 3. ページ更新後に$ _POST生成変数を保持する
- 4. charts.jsの値フィールドでJS変数を更新するにはどうすればよいですか?
- 5. Vue js - laravelブレードテンプレートの変数にVue js値を保存するにはどうすればいいですか?
- 6. Javascript:ページを更新せずにアドレスバーのURLを変更するにはどうすればよいですか?
- 7. データベースが更新されたときにページを更新するにはどうすればよいですか?
- 8. ページを更新せずにHTMLテーブルのコンテンツを更新するにはどうすればよいですか?
- 9. angle2でrouteParamsが変更された後、ビューを更新するにはどうすればよいですか?
- 10. jquery show()の後にページ高さを更新するにはどうすればよいですか?
- 11. dataLayer変数を更新するにはどうすればよいですか?
- 12. js関数を実行してhtmlページを変更するにはどうすればよいですか?
- 13. デリゲートタイプに情報を保持させないようにするにはどうすればよいですか?
- 14. OCamlで変数の値を保存して変更するにはどうすればよいですか?
- 15. ポップアップ後にページが更新されないようにする
- 16. ページ更新後の値を保持
- 17. 関数を使って変数を変更した後に、リスト(リスト)を更新したリストで更新するにはどうすればよいですか?
- 18. github wikiページを更新するにはどうすればよいですか?
- 19. 各ページを更新するにはどうすればよいですか?
- 20. JSに整数値を渡すにはどうすればよいですか?
- 21. スレッドに渡された変数を更新するにはどうすればよいですか?
- 22. ページをリロードせずにWebページを変更するにはどうすればよいですか?
- 23. データベースの変更後にListViewを更新するにはどうすればよいですか?
- 24. 更新された値と前回保存された値とを照合して変更をハイライトするにはどうすればよいですか?
- 25. フォームの送信後にページを更新するにはどうすればよいですか?
- 26. ページの更新後にユーザーをログアウトするにはどうすればよいですか?
- 27. ドロップダウンリストに値を保持するにはどうすればいいですか
- 28. 他のページで使用するようにJSで変数配列を保持
- 29. SharedPreferenceが変更されるたびにTextViewを更新するにはどうすればよいですか?
- 30. 複数レベルの再帰によって値を保持するにはどうすればよいですか?
ブラウザにCookieを設定するか、次回の読み込み時に値をページに入れるメッセージをサーバーに送信します。 – pickypg