я пытаюсь получить позицию прокрутки из 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);
}
}





Исходя из ваших требований, если вы хотите знать, как получить позицию прокрутки для 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