我正在jQuery中正在处理一个页面。我的页面包含一个链接和一个表单。这是我想要的行为:
当用户点击链接时,浏览器会向下滚动到带有动画的表单。这是代码,它运作良好:
$('#myLink').click(function(){
$('body, html').stop().animate({scrollTop:$('#myForm').offset().top-20});
});
现在,我想要的是,当用户点击其浏览器的上一个历史记录按钮时,浏览器会以动画的形式向上滚动到页面顶部。
这是我使用的代码。在JS代码的开头,我做了:
history.pushState({'myStatus':'init'},'init','');
然后,在点击监听器中我添加了:
if(history.state.myStatus == 'init') history.pushState({myStatus:'form'},'','#form');
然后,onpopstate:
window.onpopstate = function(){
if(history.state.myStatus == 'init' ) $('html,body').animate({scrollTop:0});
};
这很有效。我唯一的问题是在动画之前,浏览器跳到顶部,我不喜欢它。
有没有办法让它更好用?
谢谢!