我在Drupal站点中遇到“加载更多”的问题。链接示例:https://www.nova969.com.au/tag/news

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

加载更多是通过视图加载更多(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);


请帮忙吗?

最佳答案

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

视图加载更多脚本将Drupal.attachBehaviors()应用于每个新附加内容。在您的情况下,当添加新项目时,边栏行为将重新附加并重新初始化:

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


有趣的是,作者在同一行上发表了评论,解释说这是另一个问题的解决方法,并建议打败他……因此,解决该问题将得到一个新的/旧的错误。令人恐惧的级联错误修正错误...;)

09-25 18:57