滚动到多个页面
scrollTo across multiple pages
本文关键字:滚动 更新时间:2023-09-26
我有jQuery scrollTo
工作在一个网站的单一页面,通过调用每个元素的id
激活滚动
我想做的是在另一个页面上包含元素,当单击菜单中的链接时,加载新页面并滚动到正确的元素。
例如,如果我的联系人部分在"第1页"的底部,但我在"第2页"。我希望能够在菜单中点击联系人,它加载"第1页",然后滚动到底部的联系人部分。
我使用的当前脚本和代码如下:
<script type="text/javascript">
function goToByScroll(id){
$('body').animate({ scrollTop: $("#"+id).offset().top },'slow');
}
var hash = window.location.hash;
setTimeout(function(){
goToByScroll(hash);
}, 300);
</script>
导航链接为:
<a href="javascript: void(0)" onClick="goToByScroll('contact')">contact</a>
我该怎么做?
我可以想到两种方法。
1:您可以使用ajax来加载其他页面,但这意味着页面本身的任何javascript都不会运行,除非您使用eval(坏选项)。一个更好的方法是触发一个函数,根据你正在加载的页面修复所有javascript。
2:通过url传递一个参数,它告诉scrollto应该触发到一个特定的ID。但是这会使你的url混乱。
回复评论:我在这里创建了一个概念证明:http://stackoverflow.stijnd.be/scrollto-fix/?tar=Scrollto3
javascript检查url中的查询字符串并解析它:这是jquery代码:
$(document).ready(function(){
var current_url = document.URL;
var qry_start = current_url.indexOf('?');
var qry_str_values = new Array();
if(qry_start)
{
var qry_str = current_url.substring((qry_start+1));//omit ?
var qry_str_array = qry_str.split('&');
for(var i=0; i < qry_str_array.length; i++)
{
var tmp_pair = qry_str_array[i].split('=');
qry_str_values[tmp_pair[0]] = tmp_pair[1];
}
if(typeof qry_str_values['tar'] != 'undefined')
{
alert('The page should scroll to: #'+qry_str_values['tar']);
$.scrollTo('#'+qry_str_values['tar'], 1000);
}
else
{
alert("Couldn't find the tar-key in the querystring!");
}
}
});
希望这篇文章能让你一路顺风
相关文章:
- 幻灯片滚动javascript不起作用
- 将视口底部滚动到元素底部
- jQuery Lazy加载动画滚动
- 设置滑块分区上的滚动
- 结合jQuery和jetpack无限滚动
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- 滚动到容器中的下一个元素-几乎到了
- 只覆盖箭头键滚动事件
- Javascript如何找到滚动事件的来源
- Image赢得't隐藏在滚动jQuery上
- Safari(Mac OS)上的jQuery平滑滚动问题
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 禁用(而不是隐藏)浏览器滚动条
- JavaScript上下滚动不可预测
- 滚动和表格
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 我希望只有在我滚动页面后才能显示我的返回页首图标
- 循环滚动数组
- 滚动以修复向上滚动的问题
- css停止图像在滚动中移动