平滑滚动历史记录,没有哈希

时间:2015-11-10 17:29:24

标签: javascript jquery smooth-scrolling

我使用这个jquery脚本进行Smooth Scroll,但我不知道如何在没有url的哈希(#)的情况下更改锚点的历史记录。

我需要用户使用浏览器的后退和前进按钮,因此,如果没有任何内容可以提取维护这些操作的哈希,我想知道如何更改'#'到' /'在地址栏上。

谢谢!

(function($) {

    $.fn.SmoothAnchors = function() {

        function scrollBodyTo(destination, hash) {

            var scrollmem = $(document).scrollLeft();
            window.location.hash = hash;
            $(document).scrollLeft(scrollmem);
            $("html,body").animate({
                scrollLeft: destination
            }, 500);

        }

                if (typeof $().on == "function") {
            $(document).on('click', 'a[href^="#"]', function() {

                var href = $(this).attr("href");

                if ($(href).length == 0) {

                    var nameSelector = "[name=" + href.replace("#", "") + "]";

                    if (href == "#") {
                        scrollBodyTo(0, href);
                    }
                    else if ($(nameSelector).length != 0) {
                        scrollBodyTo($(nameSelector).offset().left, href);
                    }
                    else {
                        // fine, we'll just follow the original link. gosh.
                        window.location = href;
                    }
                }
                else {
                    scrollBodyTo($(href).offset().left, href);
                }
                return false;
            });
        }
        else {
            $('a[href^="#"]').click(function() {
                var href = $(this).attr("href");

                if ($(href).length == 0) {

                    var nameSelector = "[name=" + href.replace("#", "") + "]";

                    if (href == "#") {
                        scrollBodyTo(0, href);
                    }
                    else if ($(nameSelector).length != 0) {
                        scrollBodyTo($(nameSelector).offset().left, href);
                    }
                    else {
                        // fine, we'll just follow the original link. gosh.
                        window.location = href;
                    }
                }
                else {
                    scrollBodyTo($(href).offset().left, href);
                }
                return false;
            });
        }
    };
})(jQuery);

$(document).ready(function() {
    $().SmoothAnchors();
});

0 个答案:

没有答案