2011-09-19 14 views
5

私たちはwindow.history.replacestateを使ってプロジェクトを進めています。残念ながら、私たちはjavascriptがあまりよくありません。window.history.replaceStateの 'data'とは何ですか?

本質的に、「ルート」リンクへの任意の数のショートリンクを置き換えるために使用しています。たとえば:

domain.com/fJfk8 
domain.com/9dkDl 
domain.com/fjgdD 

がすべてのように「見える」になります。

domain.com/nice_url 

は、それは我々がページではJavaScriptを出してあげると、ブラウザでそれがないので、仕事を持っていませんその後、素晴らしいともしそうでなければ、彼らはショートコードを手に入れます。

注:はありません希望の履歴!

だから我々は単に使用している:

window.history.replaceState('Object','Nice URL Title', '/nice_url'); 

質問はこれが動作しているように見えますが、我々は「オブジェクト」(データ)の部分を理解していないということです。

正確には何ですか?

答えて

3

あなたはpopstateイベントで提供されていますeventオブジェクトのstateパラメータで利用できるようになりますarbritaryデータにObjectパラメータを設定することができます。

つまり、ユーザーが履歴をナビゲートするときにWebページを目的の状態に復元するのに役立ちます。

詳細については、MDC documentation on window.historyを参照してください。

window.history.replaceState({ 
    foo: 'bar' 
}, 'Nice URL Title', '/nice_url'); 

window.onpopstate = function (e) { 
    if (typeof e.state == "object" && e.state.foo == "bar") { 
     alert("Blah blah blah"); 
    } 
}; 

window.history.go(-1); 
+0

[OK]をクリックすると、大まかにポップステートが何であるかが素早く読み取られます。ですから、私たちのインスタンスでは、URLが変更された状態で動作するため、ユーザーが履歴を返しても何もする必要はありません。 –

+0

@Mike:あなたはおそらくそうです。ユーザーがヒストリの中で 'pushState'や' replaceState'を使ってヒストリスタック上のページに戻ると、ページは自動的に更新されません。 'onpopstate'イベントをキャプチャしてページを目的の状態に変更するのはあなた次第です。 – Matt

関連する問題