0

これは複製だと思うかもしれませんが、これは複製ではありません。

このトピックの change-hash-without-reload-in-jquery#では、文字の後に URL を変更しますが、Facebook メッセージの URL の変更を見ると、余分な#文字なしで Facebook が URL を変更していることがわかります。

facebook.com/message/user1

2 番目のユーザー メッセージをクリックすると、次のように変更されます。

facebook.com/message/user2

この URL は、リダイレクトせずに # 文字を使用せずに変更します。

4

1 に答える 1

2

History.jsは、クロス ブラウザー サポートでこれを達成するための最善の策です。古いブラウザは URL の直接操作をサポートしておらず、代わりにハッシュ タグ (#) メカニズムが使用されていることに注意してください。

以下は、彼らの入門セクションの一部です。

(function(window,undefined){

    // Prepare
    var History = window.History; // Note: We are using a capital H instead of a lower h
    if ( !History.enabled ) {
         // History.js is disabled for this browser.
         // This is because we can optionally choose to support HTML4 browsers or not.
        return false;
    }

    // Bind to StateChange Event
    History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
        var State = History.getState(); // Note: We are using History.getState() instead of event.state
        History.log(State.data, State.title, State.url);
    });

    // Change our States
    History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"
    History.pushState({state:2}, "State 2", "?state=2"); // logs {state:2}, "State 2", "?state=2"
    History.replaceState({state:3}, "State 3", "?state=3"); // logs {state:3}, "State 3", "?state=3"
    History.pushState(null, null, "?state=4"); // logs {}, '', "?state=4"
    History.back(); // logs {state:3}, "State 3", "?state=3"
    History.back(); // logs {state:1}, "State 1", "?state=1"
    History.back(); // logs {}, "Home Page", "?"
    History.go(2); // logs {state:3}, "State 3", "?state=3"

})(window);

HTML5 pustStateを直接使用したこれらの例を確認してください。

同様のトピックの質問:

その他のリソース:

于 2012-11-06T21:53:54.520 に答える