jQuery-动画ScrollTop跳回

这与question的情形有些相似,但是这是用于页面加载的。

有了这个网站;我们有一个固定的标题,并且有这些链接,这些链接将转到另一个页面并指向HTML元素。它在大多数时间/所有时间都可以通过简单的刷新工作,但是在进行硬刷新时,它将向下滚动到元素,然后它将跳回到用户在刷新之前开始的位置。它可以在页面顶部,中间或元素下方。

我注意到并困惑的是complete(动画对象)的回调方法称为两次。我有一个时间戳记打印到控制台上,这恰好是同一时间,并且我有一个console.trace,其结果相同。可能与它跳回来有关吗?

从上面我提到的问题出发,它建议使用preventDefault,但是当ready方法不输出事件值时,这将很麻烦。

(function($) {
    // Page Load
    var hash = checkForHash();

    if(hash) {
        setTimeout(function() {
            goToTarget(hash);
        },750,hash)
    }

    function checkForHash() {
        var hash = window.location.hash;

        if(hash === '' || hash === '#' || hash === undefined) {
            return false;
        } else {
            return hash;
        }
    }


    function goToTarget(hash) {
        var $target = $(hash);
        var $fixedHeader = $('.navbar-static-top')[0];
        $target = $target.length ? $target : $('[name="' + hash.slice(1) + '"]');

        if($target.length) {
            var isAnimating = false;
            var scrollDistance = $target.offset().top - ($fixedHeader.clientHeight + 20);

            if(!isAnimating) {
                isAnimating = true;

                $('html,body').stop().animate({
                    scrollTop: scrollDistance
                },250,'linear',function() {
                    // window.scroll(0,scrollDistance);
                    isAnimating = false;
                } );
            }
        }
    }

})(jQuery.noConflict);
wanganqideming 回答:jQuery-动画ScrollTop跳回

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2664365.html

大家都在问