如何设置新页面的页面顶部滚动位置

3

我有一个页面,在页面的左侧始终有相同的菜单。当点击href时,会打开新页面,但会自动滚动到页面顶部。我希望新页面的scrollTop位置与前一个页面相同。

$('a').click(function(e){
  var scroll = $(window).scrollTop();
  event.preventDefault();
  var targetLink = $(this).attr('href'); 
  window.open(targetLink, '_self','top=scroll', 'top=500'); // top position dosent work for me, top position=scroll
});

我该如何实现这个归档呢?

1
在链接后附加“#ididtoscroll” - Nagaraju
2个回答

2

您应在重定向 URL 中包含查询字符串参数,以提供新页面应加载的顶部位置

var targetLink = $(this).attr('href') + '&top=' + scroll;

然后在加载的下一页上,使用JS / jquery将顶部位置设置为该值(如果在查询字符串中检测到该值)。


这将仅根据当前窗口设置新窗口的顶部位置。参见 https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_open5。 - Nagaraju

1

如果在同一窗口中打开新页面,则无法设置滚动位置。如果在新窗口中打开新页面,则可以按下面所示设置滚动位置:

var win = window.open(targetLink, '_blank',''); 
setTimeout(function(){win.scrollTo(0,scroll);},1000);

如果您在同一窗口中打开页面,则以下是解决方法:
var win = window.open(targetLink+"?scroll="+scroll, '_self',''); 

在链接末尾添加滚动值作为查询参数,希望您了解查询参数。然后在第二个页面中,我们需要放置以下代码以使其滚动。

var href = window.location.href;
var scrollPos = href.substring(href.indexOf("scroll")+7);
window.scrollTo(0,parseInt(scrollPos));

谢谢您详细的回答,因为它回答了我的问题,我接受了它。但是它并没有真正帮助到我,因为我在滚动方面遇到了其他问题。所以我只是使用了我的div id来定位页面,比如href="/index/65#centerpage"。 - Somepub
这是更可靠的滚动方式,通过传递要聚焦的 div 的 id 来实现。 - Nishesh Pratap Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接