4

history.pushstate イベントの実験に少し問題があります。ページの URL が AJAX 経由でロードされたページの実際の URL になるように設定し、それが正常に機能するようにしました。

以前にロードしたページをロードして、自動的に履歴を作成する必要があることを理解しました。残念ながら、ハットは発生せず、戻るまたは進むをクリックすると、URL は変更されますが、ページは変更されません。手伝って頂けますか?これが私の簡略化されたコードです:

    function hijackLinks() {
        $('a').live("click", function (e) {
            e.preventDefault();
            loadPage(e.target.href);    
            direction = $(this).attr('class');        
        });   
    }


    function loadPage(url) {
        if (url === undefined) {
            $('body').load('url', 'header:first,#content,footer', hijackLinks);
        } else {
            $.get(url, function (data) {
                $('body').append(data);
                 window.history.pushState(url, url, url);

                if (direction === "leftnav") {
                   //DO STUFF
                }
                if (direction !== "leftnav") {
                   //DO STUFF
                }

                setTimeout(function () {
                  //DO STUFF
                },1000);
            });
        }
    }
    $(document).ready(function () {
        loadPage(); 

    });
4

3 に答える 3

14

それを考え出した、私はちょうど追加しました:

    window.addEventListener("popstate", function(e) {
    loadPage(location.pathname);
});

ページの最後まで

于 2011-03-22T22:13:57.710 に答える
1

はい、Safari iOS には HTML5 History API に関するかなりの数のバグがあります。実際には、すべての HTML5 ブラウザは互いに異なる動作をするため、機能は現時点ではそれほど標準的ではありません。

クロスブラウザーの互換性の問題を解決し、必要に応じてオプションの HTML4 ハッシュ フォールバックも提供するHistory.jsがあります。また、「互換性に関する注意事項」セクションを参照して、修正されたすべてのブラウザー バグに関する情報を確認することもできます。

于 2011-03-23T13:28:37.447 に答える