web-dev-qa-db-ja.com

Ajaxビューのスクロール動作を無効にしますか?

Ajaxベースのビューで上にスクロールの動作を無効にするにはどうすればよいですか? Javascriptを使用することをお勧めします。

公開されたフォームから検索を実行すると、スクロール動作がトリガーされます。

1
Sam

上記の解決策はDrupal 7.の場合です。Drupal 8では、hook_views_ajax_data_alterは廃止され、hook_ajax_render_alterに置き換えられました。

お探しの方のために、Drupal 8 (source here) で行う方法を示します。

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

古い issue から解決策を見つけました。

スクロール動作はajaxコマンドviewsScrollTopとして追加され、hook_views_ajax_data_alterで設定解除できます。

/**
 * Implement hook_views_ajax_data_alter().
 */
function YOURMODULE_views_ajax_data_alter(&$commands, $view) {
  // Remove scroll to top behaviour from views ajax
  foreach ($commands as $key => $command) {
    if ($command['command'] == 'viewsScrollTop') {
      unset($commands[$key]);
      break;
    }
  }
}
1
Jimmy Ko