-2

スクリプトを使用してメニュー項目を選択し、ページ上の選択した場所に移動します。

$(function () {
    var topMenu = $('.nav'),
        menuItems = topMenu.find('a'),

        scrollItems = menuItems.map(function () {
            var item = $($(this).attr('href'));
            if (item.length) {
                return item;
            }
        }),

        hash = window.location.hash;

    menuItems.click(function (e) {
        e.preventDefault();
        var href = $(this).attr('href');
        offsetTop = href === "#" ? 0 : $(href).offset().top - 20;
        window.history.replaceState('', '', href);
        $('html, body').animate({
            scrollTop: offsetTop
        }, 300);
    });
});

Chrome、FF、Opera では完全に動作しますが、IE9、8、7 ではまったく動作しません。

IEで動作させるには?

それは私のコードですhttp://jsfiddle.net/UB9f9/10/

4

1 に答える 1

1

行の下にコメント。window.history.replaceStateは、IE 7、8、9 のチェック互換性チャートでは機能しません。http://caniuse.com/#search=replaceState

// window.history.replaceState('', '', href);

于 2013-11-01T12:35:20.727 に答える