3

次のような履歴があるとします。

 - Home
 - Page 1
 - Page 2

JShistory.go(-1)はページ 1 に移動するのにうまく機能します...しかし、現在の履歴が

 - Home
 - Page 1
 - Page 2
 - Page 2 (2nd time)
 - Page 2 (3rd time)
 - ...
 - Page 2 (nth time)

history オブジェクトを使用してPage 1JavaScriptに戻るにはどうすればよいでしょうか?

4

3 に答える 3

1

オブジェクトのプロパティに +1 を実行する関数を作成し、この値を使用して適切な量のステップを戻すことができます。

var History = {

    steps : 0

}

somenewpagelink.onclick = function() {

    History.steps = (parseInt(History.steps)+1);

}

次に、1 ページ目に戻りたい場合は、単純に別の関数を作成します。

function goBack() {

    History.go(-History.steps);
    History.steps = 0;

}

戻るとステップがリセットされるため、サイトをさらにブラウズしても、多くのステップに戻ることはありません。

jQueryを使用することは良い解決策だと思いますが、生のJavascriptで簡単に解決できる小さなことではありません.1つの機能にjQueryを使用すると、サイトが遅くなるだけです.

さらに、そこにスイッチを追加して、[戻る] をクリックして実際にページ 3 からページ 1 に戻ると、逆にすることもできます。

function goBack(r) {

    if (r)
        history.go(History.steps);
    else 
        history.go(-History.steps);
        History.steps = 0;

}

もちろん、この関数は、目的の効果を達成し、完全に完璧にするために必要な微調整が必​​要になりますが、単純な実装では、これを使用できます.

于 2013-05-15T12:26:58.843 に答える
0

ページがロードされたら、js オブジェクトに history.length を記録します。page1 に戻りたいとき ,history.go(record-history.length-1)。 うまく動作するかどうかをテストしましたが、安全でないものがあるかどうかはわかりません。

于 2013-07-10T07:59:11.933 に答える