Javascript jQuery OnLoad页面滚动问题

Javascript jQuery OnLoad页面滚动问题,javascript,jquery,html,scrollto,Javascript,Jquery,Html,Scrollto,我正在开发一个网站,用户可以使用地址栏中的#值从其他页面导航到页面的不同部分 我在这里编写了一个jQuery函数来处理滚动: jQuery.fn.scrollToDiv = function(navheight) { if (!navheight) { navheight = 30; } var offset = this.offset(); var offsetTop = offset.top; var totalScroll

我正在开发一个网站,用户可以使用地址栏中的
#
值从其他页面导航到页面的不同部分

我在这里编写了一个jQuery函数来处理滚动:

jQuery.fn.scrollToDiv = function(navheight)
{
    if (!navheight)
    {
        navheight = 30;
    }

    var offset = this.offset();
    var offsetTop = offset.top;
    var totalScroll = offsetTop-navheight-27;
    $('body,html').animate({
            scrollTop: totalScroll
    }, 500);
}
我在两种不同的场景中调用该函数;当用户单击对象位于当前页面上的链接时,以及当用户单击在滚动到元素之前将他们带到另一页面的链接时。见下文:

当您在页面上时:

$('.gotoPage').on('click', function(e)
{
    e.preventDefault();
    var sPath = window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    if (sPath != '' && sPath != 'home')
    {
        var href = $(this).attr('href');

        handleScroll(href);
    }
});
$(document).ready(function(e) 
{    
    var target = window.location.hash;

    if (target != '')
    {
        $(target).scrollToDiv(30);
    }
});
当您不在页面上时:

$('.gotoPage').on('click', function(e)
{
    e.preventDefault();
    var sPath = window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    if (sPath != '' && sPath != 'home')
    {
        var href = $(this).attr('href');

        handleScroll(href);
    }
});
$(document).ready(function(e) 
{    
    var target = window.location.hash;

    if (target != '')
    {
        $(target).scrollToDiv(30);
    }
});
当您在页面上并单击链接时,它可以完美地工作,但是当您不在页面上时,它会按预期将您带到后续页面,但不会滚动到所需的元素

如果你需要更多的信息,请告诉我

提前谢谢

编辑:添加功能
handleScroll(目标)


以下是您的评论:

我注意到刷新页面时,页面会向下滚动 跳回页面顶部

看起来你的脚本确实有效,但后来有些东西影响了它。 我相信,当滚动动画生效时,有一些资源作为附加css代码或图像未被考虑,并且由于该功能通过
top
offset工作-您必须确保在所有可能影响文档高度或元素偏移的资源之后使用它,正在加载

因此,不要在
.ready()
中使用脚本,而是使用
.load()

在大多数情况下,只要DOM层次结构完成,就可以运行脚本 已经完全建成。传递给.ready()的处理程序是有保证的 在DOM就绪后执行,因此这通常是最好的 放置以附加所有其他事件处理程序并运行其他jQuery代码

如果代码依赖于加载的资产(例如 图像的尺寸是必需的),代码应放在 而不是加载事件的处理程序


您在控制台中有任何错误吗?可能
目标
不是有效的选择器?没有错误,我在刷新页面时注意到,它向下滚动然后跳回到页面顶部。可能是由于图像和样式资源对窗口高度的影响<代码>如果代码依赖于加载的资产(例如,如果需要图像的尺寸),则应将代码放在加载事件的处理程序中。因此,请放置滚动脚本(问题中的块号2):
$(window).load(function(){…})你的
handleScroll(href)是什么函数看起来像什么?哦,太好了。我会把它贴出来的。