3

誰かが私に状態を説明してくれませんか?

たとえば、history.jsプラグインを使用します。

History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"

アドレス バーにプッシュされる URL であるため、最後のパラメーターは理解できますが、最初の 2 つのパラメーターはわかりません。戻る/進むナビゲーションに問題があるため、これらを理解することは、自分のサイトに history.js を実装するのに役立ちます。

Mozilla devサイトには次のように書かれています。

状態オブジェクト— 状態オブジェクトは、pushState() によって作成された新しい履歴エントリに関連付けられた JavaScript オブジェクトです。ユーザーが新しい状態に移動するたびに popstate イベントが発生し、イベントの状態プロパティには履歴エントリの状態オブジェクトのコピーが含まれます。状態オブジェクトは、シリアル化できるものであれば何でもかまいません。Firefox は状態オブジェクトをユーザーのディスクに保存して、ユーザーがブラウザーを再起動した後に復元できるようにするため、状態オブジェクトのシリアル化された表現に 640k 文字のサイズ制限を課しています。シリアル化された表現がこれよりも大きい状態オブジェクトを pushState() に渡すと、メソッドは例外をスローします。これ以上のスペースが必要な場合は、sessionStorage や localStorage を使用することをお勧めします。

状態は、AJAX を使用して読み込まれたコードの単なるコピーですか? それとも、そのコードの単なる表現なので、呼び出すことができますか?

これに対する洞察は大歓迎です!

4

1 に答える 1

6

状態オブジェクトは任意の Javascript オブジェクトです。単一の変数にすることも、関数と値の巨大なハッシュマップにすることもできます。その時点でのアプリの「状態」を表すために使用するデータです。このようなものは非常に一般的です:

var viewModel = {
    title: 'FAQs',
    url: 'faqs.html',
    favouriteColor: 'green',
    stepsCompleted: 4
};

history.pushState(viewModel, viewModel.title, viewModel.url);

これは基本的に、「記憶」して後で状態を復元するために必要なものを含むオブジェクトを作成することです。たとえば、ユーザーがウィザード形式の段階的なフォームなどに従っている場合などです。

2 番目のパラメーター はtitle、当分の間ブラウザーによってほとんど無視されますが、おそらく、ページ タイトルを更新する必要がある前後のナビゲーションなどのユースケースを対象としています。

于 2012-10-11T22:17:21.270 に答える