1

いくつかのページがあり、最後のページでは、ユーザーが最後の 2 つのページで行った選択を知る必要があります。このような:

a.html ユーザーには、ここで別の URL に移動する 3 つの選択肢があります。どういうわけかこの選択を保存して、後で使用する必要があります。

例:

<script>globalVariable1="firstchoice"</script>

b.html これは 3 つの選択肢のページの 1 つです。ここでユーザーは、別の URL に移動する 3 ~ 4 つの新しい選択肢を持っています。また、後で使用するために、この選択を何らかの形で保存する必要があります。

例:

<script>globalVariable2="thirdchoice"</script>

c.html これは、ユーザーが以前に行った選択を知る必要があるページです。ユーザーがパンくずリストに戻りたい場合に、それらの正確なページにリンクできるようにするため。

例:

<script>
  if(globalVariable1 == "firstchoice"){
    //do this
  }
  if(globalVariable2 == "thirdchoice"){
    //do this
  }

</script>

javascript のいくつかのグローバル変数でこれを行うことはできますか、またはこれをどのように解決できますか?

ありがとう

4

5 に答える 5

4

localStorageを使用できます。ページ間を移動したり、ページをリロードしたり、ブラウザーを閉じて再度開いたりしても、キーと値のペアを保持するブラウザー API。

//setting a value
localStorage["foo"] = "bar";

//getting a value
var x = localStorage["foo"];

sessionStorage を使用することもできます。

//setting a value
sessionStorage["foo"] = "bar";

//getting a value
var x = sessionStorage["foo"];

ウィキペディアのWeb Storageの記事では、localStorage と sessionStorage の違いを次のように説明しています。

ローカル ストレージに配置されたデータはドメインごとにあり (最初にデータを保存したドメインのすべてのスクリプトで使用できます)、ブラウザーを閉じた後も保持されます。セッション ストレージはウィンドウごとのページごとであり、ウィンドウの有効期間に制限されます。セッション ストレージは、同じ Web アプリケーションの個別のインスタンスを、互いに干渉することなく異なるウィンドウで実行できるようにすることを目的としています。これは、Cookie では十分にサポートされていないユース ケースです。
于 2013-08-14T09:01:03.733 に答える
3

ユーザーの状態を追跡するには、Cookie を保存する必要があります。cookie.jsを試してください。GitHub ページで読むことができる、非常にシンプルなキーと値のインターフェイスを備えています。

于 2013-08-14T08:53:27.890 に答える
2

localStorage または sessionStorage を使用できます。

于 2013-08-14T09:01:00.607 に答える
2

Web ページはステートレスであるため、ページ間でグローバル JavaScript 変数を共有することはできません。

ただし、Cookie の値を使用して、ページおよび含まれるモジュールのグローバル変数を設定できます。

Cookie は、現在のブラウザのドメインのすべてのページで利用できます。

例:

//Page 1: Set cookie depending on user choice
$.cookie("choice1", ValueOfChoice1);

//Page 2: Get previous user choice
globalVariable1 = $.choice1("example");

Cookieの使用方法の詳細については、jQuery を使用した Cookie の設定を参照してください。

于 2013-08-14T08:54:04.507 に答える
0

PHP や Asp.Net などのサーバー側言語を使用している場合の別の選択肢は、サーバー上のユーザーのセッションでこれらの値を保存することです。

于 2013-08-14T08:55:47.500 に答える