代码之家  ›  专栏  ›  技术社区  ›  Hello Universe

确保单击“加载更多”不会导致用户滚动到顶部

  •  0
  • Hello Universe  · 技术社区  · 7 年前

    我对Drupal站点中的Load More有一个问题。示例链接: 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);
    

    请帮忙?

    1 回复  |  直到 7 年前
        1
  •  1
  •   EricLavault    7 年前

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

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