Tutorial

Prevent scrolling back to top of the page when trigger('RefreshView') is called in Drupal 8

There is a very handy function in Drupal 8 / 9, allowing developers refresh view when needed from javascript. The syntax goes by:

$('.view-selector').trigger('RefreshView');

This nice and all but for a reason unknown it always scrolls to the top of the page. Somehow Drupal developers always mess things up, so there is a way how to prevent that.

Pridal/a lubo dňa Po, 09/26/2022 - 05:17
Use HOOK_ajaxy_render_alter()

In your module, just write this function replacing YOURMODULE by your module name:

function YOURMODULE_ajax_render_alter(array &$data) {
  foreach ($data as $key => $value) {
    if ($value['command'] === 'viewsScrollTop') {
      unset ($data[$key]);
      break;
    }
  }
}

It will prevent scrolling of any refreshview events. I found an issue on stackoverflow where you can precisely target which view you want, but this is way more general approach. Who needs automated scrolling anyway? I would write my own scrolling if I needed to, no?

Might interest you

Tutorial
Universal way of adding HTTPS only solution to your Drupal 8 installation.
Tutorial
Sometimes you need to make an adjustements to a cart, or just simply compare the order total or any other property of current user's cart.…

Recommended

Tutorial
2 views
When using Swiftmailer under Drupal 8 / 9 it automatically sets the headers for sender to…
Tutorial
2 views
Yes, IOS / Safari is the new internet explorer. Amount of time I spend on debugging…
Tutorial
8 views
There is a very handy function in Drupal 8 / 9, allowing developers refresh view when…
Tutorial
2 views
Often, when doing SEO checkups, SEO specialist come up with adding Schema.org…
Tutorial
19 views
I needed to test my contracts against USDC contract, specifically I needed ERC-721 mint…