1

履歴 API を介して URL が変更される Google インスタント タイプのものがあります。この問題は、ユーザーがあるクエリから別のクエリに移動し、[戻る] ボタンを押しても何も起こらない場合に発生します。アドレスバーの URL が変わる、それだけです。戻る/進むボタンが押されたとき、または URL が変更されたときを検出して、イベントを発生させる必要があります。とにかく、私のサイトは最新のブラウザーでしかアクセスできないため、これが最新のブラウザーで機能することだけを気にします。

また、反復は即時ではなく、イベントほど単純ではないため、反復を使用しないことをお勧めします。もっと簡単な他の方法はありますか?ありがとう。

4

1 に答える 1

1

Windows popstateイベントは、URLがpushstateで変更されるたびに発生します。これは、ブラウザーの戻る/進むボタンでも発生するため、ajaxまたは使用しているものでサイトのコンテンツを変更するために使用する必要があるイベントです。一部のブラウザでは、最初のページの読み込み時にも起動するため、それも確認する必要があります。

イベントハンドラーなどを使用して本格的なネイティブJSの例を作成する時間は実際にはありませんが、jQueryの簡単なバージョンを次に示します。

var checkForFirstLoad = true;

$(window).on({
    load: function() {
        checkForFirstLoad = false;
    },
    popstate:function(e) {
        if (checkForFirstLoad) {
            updatePage(e.originalEvent.state!=null ? e.originalEvent.state.page : document.location.pathname, true);
        }else{
            checkForFirstLoad = false;
        }
    }
});

function updatePage(pageURI, type, switchContent) {
    if (!type) {
        history.pushState({ page: pageURI }, page, pageURI);
    }
    if (switchContent) {
        //replace site content etc.
    }
}

これは非常に単純な例であり、ブラウザサポートの確認、クリックされたリンクが現在のURLと同じhrefであるかどうかの確認、異なるURLの認識など、さらに多くのことが行われています。オブジェクトリテラルには数千行のコードがあるため、popstateがどのように機能し、独自のコードでどのように使用するかを正確に把握する必要があります。

于 2013-02-17T06:28:19.420 に答える