Skip to main content
Drupal code

Main navigation

  • Home
  • Snippets
User account menu
  • Log in

Breadcrumb

  1. Home

How to Stop Drupal Views from Automatically Scrolling to Content on AJAX Refresh

By admin , 21 July, 2026

Tags

  • views
  • ajax

By default, when a user applies an exposed filter in a Drupal View with AJAX enabled, the page automatically jumps or scrolls directly to the top of the View content. While intended to help, this behavior can often disrupt the user experience.

If you want to keep your users exactly where they are without any forced movement, you can intercept and remove the scroll command before it reaches the browser. Implementing hook_ajax_render_alter() allows you to find the scrollTop command in the AJAX data array and unset it.

 /**
  * Implements hook_ajax_render_alter().
  */
 #[Hook('ajax_render_alter')]
 public function ajaxRenderAlter(array &$data) {
   foreach ($data as $key => $command) {
     if (is_array($command) && isset($command['command']) && $command['command'] === 'scrollTop') {
       unset($data[$key]);
     }
   }
 }

Tags Cloud

dependency injection(21) form(20) views(16) drush(15) twig(13) field(12) preprocess(10) comment(7) render(7) node(7) translate(7) tabs(7) controller(6) phpstorm(6) file(6) phpunit(5) entity(5) config(5) entityTypeManager(5) routes(5) database(4) php(4) jquery(4) service(4) roles(4) commerce(3) image(3) date(3) ajax(3) entityQuery(3) cache(3) slick(3) block(3) custom entity(3) javascript(3) user(3) taxonomy(3) guzzle(3) redirect(3) url(3) docker(2) git(2) request(2) phpstan(2) event(2) template(2) module(2) schema(2) migration(2) libraries(2) access(2) drupal.org(2) tests(2) photoswipe(2) permissions(2) logger(2) vscode(2) suggestions(2) states(2) title(2) fieldset(2) mysql(2) weight(1) toolbar(1) webprofiler(1) validation(1) Constraint(1) CKEditor(1) phpcs(1) hook(1) ci-cd(1) gitlab(1) docksal(1) revision(1) filter(1) attribute(1) service provider(1) csv(1) PHPDoc(1) table(1) eslint(1) array(1) deprecation(1) theme(1) errors(1) wsod(1) settings.php(1) watchdog(1) pager(1) widget(1) file.usage(1) queue(1) exif(1) imagemagick(1) media(1) uuid(1) renderer(1) exposed form(1) page manager(1) transliteration(1) random(1) development(1) mail(1) webform(1) register(1) textarea(1) label(1) input(1) batch(1) import(1) messenger(1)
RSS feed
Powered by Drupal