为什么每次刷新徽标后页面都会自动上升?

时间:2019-07-27 08:35:46

标签: javascript ajax drupal-8 drupal-modules

我在Drupal 8上有一个站点,并使用以下代码更新了块视图:

(function ($, Drupal) {

  'use strict';

  setInterval(function() {
    $('.region-navigation-logo .view-display-id-block_3').trigger('RefreshView');
  }, 10000);

})(jQuery, Drupal);

此代码将更新网站徽标。问题是,如果我向下滚动页面,它会每10秒自动上升一次。

您可以使用:p在我的网站上进行测试

https://www.s1biose.com/fr/user/login

标识符:演示

密码:演示

然后单击该站点的徽标,向下滚动主页并等待10秒钟。您会看到页面每10秒上升一些像素。

更新

以下代码可以工作,但是它适用于网站的所有视图。

我只想将其应用于2个视图:

message_activity_stream_timeline_public

message_activity_stream_timeline_private

如何执行此操作?

/**
 * Implements hook_ajax_render_alter().
 */
function message_activity_stream_ajax_render_alter(array &$data) {
  foreach ($data as $key => $command) {
    if ($command['command'] === 'viewsScrollTop') {
      unset($data[$key]);
      break;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您可以获取以下代码的帮助,以仅针对您的视图运行代码

Drupal.behaviors.blockRefresh = {
    attach: function (context, settings) {
      jQuery.each(Drupal.views.instances, function (i, view) {
        var selector = '.js-view-dom-id-' + view.settings.view_dom_id;
        if (view.settings.view_name == "message_activity_stream_timeline_public" || view.settings.view_name == "message_activity_stream_timeline_private
" ) {
         setInterval(function() {
              $('.region-navigation-logo .view-display-id-block_3').trigger('RefreshView'); }, 10000);
             }
            }
      });
    }
  }

我没有测试它,但是它是一个示例,可以帮助您如何仅针对视图名称限制代码。