Как получить позицию прокрутки в blazor

я пытаюсь получить позицию прокрутки из EventArgs, но он не дает мне необходимую информацию о позиции прокрутки так что это единственный способ JS, также я попробовал событие @onwheel, и оно работает нормально, но работает только тогда, когда я использую колесо мыши

    @inject IJSRuntime JsRuntime
    
      <div @onscroll = "Scroll"  class = "p-4 border-2 border-gray-200 border-dashed rounded-lg dark:border-gray-700 chat-area responsive-chat-area">
         @ChatContent
      </div>
    
    @code {
          
        [Parameter]
        public RenderFragment ChatContent { get; set; }
     
        private async void Scroll(EventArgs eventArgs)
        {
            await JsRuntime.InvokeVoidAsync("console.info", eventArgs);
        }
    }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
721
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исходя из ваших требований, если вы хотите знать, как получить позицию прокрутки для Div, я предлагаю вам использовать JS, чтобы получить ее.

Более подробную информацию вы можете найти в приведенных ниже кодах:

Поместите JS, как показано ниже, в index.html:

   <script>
       // JS file or script tag
       function getScrollPosition(elementId) {
           let element = document.getElementById(elementId);
   
           return {
               scrollTop: element.scrollTop,
               scrollLeft: element.scrollLeft,
               scrollHeight: element.scrollHeight,
               clientHeight: element.clientHeight
           };
       }
   </script>

Коды компонентов:

 @inject IJSRuntime JsRuntime
 
<div id = "chatArea" @onscroll = "@Scroll" style = "border:1px dashed red;height:100px;width:200px;overflow:auto">
    In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.
    <br><br>
    'Whenever you feel like criticizing anyone,' he told me, just remember that all the people in this world haven't had the advantages that you've had.'


</div>

<h1>position:@position</h1>

@code {

    [Parameter]
    public RenderFragment ChatContent { get; set; }


    public double position;


    private async void Scroll()
    {
        // Using IJSRuntime to call the JavaScript function and pass the element's ID
        var scrollPosition = await JsRuntime.InvokeAsync<ScrollData>("getScrollPosition", "chatArea");

        position = scrollPosition.ScrollTop;
    }

    // Define a C# class to hold the scroll position data
    public class ScrollData
    {
        public double ScrollTop { get; set; }
        public double ScrollLeft { get; set; }
        public double ScrollHeight { get; set; }
        public double ClientHeight { get; set; }
    }
}

Результат:

Кстати, отсутствие информации в аргументах событий — известная проблема. github.com/dotnet/aspnetcore/issues/7357

Alamakanambra 20.02.2024 10:17

Другие вопросы по теме