【问题标题】:Ensure click of load more does not cause user to scroll to top确保单击加载更多不会导致用户滚动到顶部
【发布时间】:2017-11-18 08:29:34
【问题描述】:

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

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

Load More 是通过 Views Load More (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中如何处理,但是您可以通过获取当前滚动高度然后滚动到相应的单位来获得解决方法
  • 类似winsow.scrollBy(0,document.documentElement.scrollTop)
  • 您查看模块问题队列了吗? Look HERE
  • @2pha 谢谢。之前没有注意到。在您的链接后注意到它。我已经尝试了那里提到的所有解决方案,但没有成功

标签: javascript jquery html drupal drupal-7


【解决方案1】:

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

Views load-more 脚本将Drupal.attachBehaviors() 应用于每个新的附加内容。在您的情况下,当添加新项目时,sidebar 行为会重新附加并重新初始化:

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

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

【讨论】:

  • 谢谢埃里克。是的,这解决了问题。我就是那个作者。 :( 我知道它在说什么错误修复错误。现在,进一步调查并确保两个错误都得到解决。谢谢。
  • Drupal 总是在页面加载和 ajax 请求返回时运行 Drupal.attachBehaviors()context 将根据页面加载或 ajax 请求返回的内容而有所不同。这个context 对象应该用作jquery 选择器中的第二个参数。我以前从未在 drupal 行为中看到过 init 函数。也许告诉我们上面发布的这段代码试图修复什么,我们可以帮助您以正确的方式修复。
猜你喜欢
  • 2016-07-04
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
相关资源
最近更新 更多