在window.location.replace后触发Scroll toTop
Trigger Scroll toTop after window.location.replace JQuery
我希望有人能帮我解决这个编程问题我有。
我有一个footer.php文件,它链接到另一个页面上的一系列bs-tab组-让我们说about.php(为了方便讨论)。我希望使用JQuery完成的任务流程如下:
(假设我们在index.php上)
- 点击footer.php中的链接到about.php的标签组。
- 链接到正确的标签组。
- 加载页面并滚动到页面顶部完成。这模仿了网站的其他页面加载行为。这就是为什么这需要发生的原因。
我遇到的问题是,当在同一页面上,这些选项卡组驻留(about.php)的链接工作正常:
单击事件> TAB组更改>活动的nav-tab状态切换>页面滚动到顶部
然而,当在另一个页面上(比如从index.php路由到about.php),会发生以下情况:
单击事件> TAB组更改>活动的nav-tab状态切换>哈希锚指向页面顶部,但不滚动到页面顶部。
我已经运行了一个快速测试,发现序列似乎有问题后,我们从index.php更改为about.php:
window.location.replace(link_url);
一旦窗口位置发生变化,我如何完成编程序列?
这是我的代码,提前谢谢你:
HTML - found in footer.php:
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-6 footer-links">
<h3>Tab Groups</h3>
<ul>
<li class="tab1"><a class="active" href="/link#hashtag1" data-toggle="tab">hashtag1</a></li>
<li class="tab2"><a href="/link#hashtag2" data-toggle="tab">hashtag2</a></li>
<li class="tab3" ><a href="/link#hashtag3" data-toggle="tab">hashtag3</a></li>
</ul>
</div>
JS:
$('.footer-links a').on('click', function(e) {
var link_url = $(this).attr('href');
var link_hash = link_url.substring(link_url.indexOf('#')+1);
var totalLink = window.location.pathname + '#' + link_hash;
if (totalLink !== link_url) {
window.location.replace(link_url);
}
$(this).tab('show');
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var activeTab = this.href.split('#');
$('.nav a').filter('[href="#'+activeTab[1]+'"]').tab('show');
});
//below doesn't happen after the page loads
if($(window).scrollTop() > 0){
$('html, body').animatescroll({scrollSpeed:1000,easing:'easeOutQuint',padding:0});
} else {
$(window).scrollTop(0);
}
});
您错过的是,当您执行window.location.replace(link_url)
时,您的整个页面呈现。基本上,您永远不会达到$(this).tab('show'),以及以下的任何内容。
你应该做的是添加另一个参数到你的URL(或存储在LocalStorage,例如),然后在页面加载时检查这个参数。
if (totalLink !== link_url) {
window.location.replace(link_url + "&top=true");
}
然后在你的文档中。准备好检查这个参数并滚动到顶部。
$(document).ready(function() {
...
// This is simplified version
// For a robust version check this: http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
var params = location.search.split("=");
if (params.indexOf("top=true") >= 0) {
scrollToTop(); //same as you did in your onClick, extract it outside
}
...
}
相关文章:
- window.on.scroll事件未启动
- 组合 2 个 JavaScript .scroll 函数
- Imageslooaded无法使用Infinite Ajax Scroll和Masonry
- .scroll()函数在上次更新后在谷歌chrome中定位闪烁
- 运行Infinite Scroll后调用函数时出现问题
- 在Scroll上更新CSS代码:简化它就不会了'不要使用JQuery和最简单的Javascript
- 使用Bootstrap3更改Scroll Jquery上导航栏的高度
- jQuery 使用 .scroll(handler) 滚动到元素
- jQuery $(window).scroll事件处理程序关闭但仍在触发
- Scroll 不适用于 css()
- angularjs ng-repeat implement stick scroll
- window.scroll在页面开始时触发
- jQuery on scroll事件未启动
- 为什么调用Window.scroll()会产生一个受信任的事件
- 元素在scroll()上的位置已更改
- jQuery scroll()事件没有't传播
- Javascript:scrollTo()vs scroll(),这是公认的/标准的方法
- Iframe no scroll
- scroll-eevent和scrollTop在firefox中不起作用
- 在window.location.replace后触发Scroll toTop