在我的blazor server
侧应用程序中,我想监听mouseclick event
Razor 页面上的事件,当mouseclick
事件发生时(按钮除外),我想运行一个方法。我尝试使用 JavaScript 进行以下操作,但没有成功:
在我的_host.cshtml中添加以下脚本:
window.addDocumentClickListener = () => {
document.addEventListener('click', function (e) {
if (e.target.tagName.toLowerCase() !== 'button') {
DotNet.invokeMethodAsync('MyProjectName', 'HandleMouseClick');
}
});
};
在我的 Razor 页面中:
@inject IJSRuntime JS
...
...
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender )
{
await JS.InvokeVoidAsync("addDocumentClickListener");
}
}
[JSInvokable]
public void HandleMouseClick()
{
Action_On_Mouseclick();
}
}
这是一个没有额外 JS 的演示,使用计数器页面。它有一个
div
带有点击事件处理程序的完整页面。请注意,您需要使用stopPropagation="true"
以防止按钮和其他带有 UI 事件的 UI 元素冒泡。