5

私は簡単に実行しています:

window.location.hash = "hash";

ページの読み込み直後に URL にハッシュを追加します。mySite.com/aPage#hash ですね。戻るボタンをクリックすると、実際の読み込みや戻ることなく、URL が mySite.com/aPage に戻ることが期待されます。代わりに、mySite.com/aPage の前の履歴エントリに戻されます。

たとえば、ユーザーによってトリガーされたクリックイベントコールバックで window.location.hash を呼び出すと、うまく機能します。

テストを作成しました: http://jsbin.com/idukiz/1/ コードを参照してください: http://jsbin.com/idukiz/1/edit

setTimeout 関数内に追加された最後のハッシュのみが、期待どおりに動作します。setTimeout なしで動作させる方法はありますか?

4

1 に答える 1

1

setTimeout なしで動作させる方法はありますか?

マウスをクリックすると<a>hrefで動的に作成されます。#yourHashdispatchEvent

window.onload = function () {
    location.hash = 'foo'; // no history item created, just to help visibility
    var a = document.createElement('a'),
        ev = document.createEvent("MouseEvents");
    a.href = '#bar'; // this will create history item
    ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    a.dispatchEvent(ev); // dispatch click
};

コードのデモはこちら。Google Chrome 25 でテスト済み。

于 2013-03-26T20:06:10.130 に答える