2017-07-24 114 views
1

我想我遇到了Bootstrap的一个经典的后退按钮问题,我真的试过在网上找东西找到解决方案,但不能。 我正在使用自举导航药丸。 我有大约8个药丸,当我点击其中任何一个时,页面会滚动到该特定部分,并且URL更改为xyz.com/abc#sectionx 当我按下后退按钮时,URL更改为xyz.com/abc但该页面不会回滚到顶部。让后退按钮滚动页面到页面顶部

--- **** -----

编辑:我不认为我做了这一点。 URL的变化,但页面仍然在同一节xyz.com/abc#sectionx 因此,如果用户不看网址,那么他们会认为按下后退按钮没有效果。

--- **** -----

所以我试图用这样的:

$('html,body').on('hashchange', function() { 
    $('body').scrollTop(0); 
}); 

但没有工作,所以我想在一个不同的定义顶部的值方法:

$('html,body').on('hashchange', function() { 
    var top = $(window.location.hash).offset().top; 
    $('body').scrollTop('top'); 
}); 

但没有工作,所以我尝试:

$('html,body').on('hashchange', function() { 
if (window.scrollY>0) { 
window.scrollTo(0,window.scrollY-20) 
setTimeout("gototop()",10) 
} 
}); 

我也尝试用window代替html, body,但这也不起作用。 我真的很困惑该怎么做,以及如何使后退按钮带我到页面的顶部。问题是后退按钮正在改变很棒的URL,但它也需要滚动到顶部。 任何有关如何实现这一目标的指导将非常有价值。我会非常感谢在jQuery或纯JavaScript中的指导。

+4

我是唯一一个在网站与后退按钮混淆时真的很恼火的人吗? :( – DavidG

+0

借调:我不会推荐这样做,因为大量的人依靠后退按钮来做到这一点 – jhpratt

+0

我个人认为这样做是非常不直观的,如果按下后退按钮,不希望页面保留在网站的同一部分,而是希望它到达以前所在的位置,在本例中位于页面的顶部。 –

回答

0

如果您正在寻找滚动到顶部的方法。考虑浮动按钮或分隔每个部分的链接。如上所述,通常用户希望后退按钮能够完成预期的任务。

您可以使用自己的锚点轻松地创建链接,就像这样。

<h2 id="top">Top of Page</h2> 

// block of content 

<a href="#top">Go to top</a> 

// block of content 

<a href="#top">Go to top</a> 

..... 
+0

您认为用户期望后退按钮可以做什么?因为目前在我的情况下,后退按钮不会做任何事情的几个点击,因为锚链接更改URL。所以按下后退按钮只会改变URL,但不会将您重定向到任何页面。我想知道这是否会让用户恼火。 –

+1

一般来说默认行为。我知道锚链接可能会有点奇怪,因为它们只是让你在附近移动。如果你想深入研究它,我建议你检查[UX Stack Exchange](https://ux.stackexchange.com/),因为我不是UX的专家。 [这是一个关于后退按钮的漂亮的帖子](https://ux.stackexchange.com/questions/7909/do-users-understand-the-browser-back-button) – lloyd