2017-11-18 203 views
0

我在加载更多的Drupal站点时遇到问题。示例链接:https://www.nova969.com.au/tag/news确保点击加载更多不会导致用户滚动到顶部

如果用户在该页面按下“加载更多”,您会注意到用户被带到最高层。进一步的内容被加载。但是,用户也滚动到顶部。 我希望用户留在发生点击加载的位置

更多的是通过视图进行载荷LOAD更多(https://www.drupal.org/project/views_load_more),看起来像下面

<ul class="pager pager-load-more"> 
<li class="pager-next first last"> 
<a href="/tag/news?page=1">Load more</a> 
</li> 
</ul> 

任何帮助,高度赞赏,谢谢。

在此先感谢。

更新:

我已经试过如下

/* Views Ajax Content Load Autoscroll Feature Disabled */ 
jQuery(document).ready(function(){ 
     //On page load 
     jQuery('.pager-item a.views-ajax-scroll-processed').click(function(){ 
     jQuery('body, html').stop(); 
    }); 
     //Again after ajax request is completed 
     jQuery(document).ajaxComplete(function(){ 
     jQuery('.pager-item a.views-ajax-scroll-processed').click(function(){ 
      jQuery('body, html').stop(); 
     }); 
    }); 
}); 

这没有奏效。尝试以下:

(function($){ 

     if (Drupal.ajax) 
     Drupal.ajax.prototype.commands.viewsScrollTop = null; 

})(jQuery); 

这没有奏效。尝试下线评论。这也失败了

//$(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500); 

请任何帮助吗?

+0

我不知道如何在'drupal'处理,但你可以通过获取当前的滚动高度得到了解决方法,然后滚动到相应的单位 –

+0

类似的东西 'winsow .scrollBy(0,document.documentElement.scrollTop)' –

+0

你看过模块问题队列吗? [看这里](https://www.drupal.org/project/views_load_more/issues/1404664) – 2pha

回答

1

我检查了页面上的脚本,看起来您有一种自定义行为,无论发生什么事情,都会触发滚动到顶部。

视图load-more脚本对每个新添加的内容应用Drupal.attachBehaviors()。在你的情况,当新的项目被追加,行为被重新连接,并重新初始化:

Drupal.behaviors.sidebar = { 
    attach: function (context, settings) {/*...*/}, 
    init: function() { 
    $(window).scrollTop(1); // <- your issue here. 
    // ... 
    } 
}; 

有趣的是,作者留在同一行解释,这是另一个问题的解决方法的注释,建议打败他......所以你会通过解决这个问题来得到一个新的/旧的错误。可怕的级联修正错误的bug ...;)

+0

谢谢埃里克。是的,这解决了这个问题。我是那个作者。 :(我知道它在说什么bugfix bug。现在,进一步调查并确保两个bug都解决了。谢谢。 –

+0

Drupal在页面加载和返回ajax请求时总是运行Drupal.attachBehaviors()。 ''会因页面加载或ajax请求返回的内容而有所不同,这个'context'对象应该被用作jquery选择器中的第二个参数,我以前从来没有在drupal的行为中看到init函数。上面发布的代码正在尝试修复,我们可以帮助您解决这个问题。 – 2pha