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)是什么代码>函数看起来像什么?哦,太好了。我会把它贴出来的。