whi*_*rot 8 javascript signalr asp.net-core blazor blazor-server-side
我正在开发一个 ASP.NET Core 3.1 Blazor 服务器端应用程序,该应用程序具有带有 EditForm 的 Blazor 组件。我想警告用户,如果他们尝试导航离开页面(即单击浏览器后退按钮或选择导航菜单来加载同一应用程序中的另一个页面),他们有未保存的数据。
我读过有关使用 javascript window.onbeforeunload 的帖子,但我不确定在 Blazor 服务器端调用 javascript 是否会扰乱 SignalR 连接。
我还阅读了有关使用 CircuitHandler 的帖子,但我不确定如果用户只是移动到同一应用程序中的不同页面,SignalR 电路是否会发生变化。
关于如何最好地处理这一要求有什么建议吗?
我猜想这样做只是为了程序化导航,因为不可能阻止人们单击标签时发生的导航。对于 Blazor Server,逻辑必须异步运行,因此 JS 事件无法取消。对于 Blazor WebAssembly 或任何基于 JS 的 SPA 框架的事件,阻止对标签的点击没有意义,因为浏览器并不总是尊重您的意图(例如,如果用户右键单击并选择在新选项卡中打开)。
如您所见,在这方面我们无能为力。但是,您应该以一种可以让您尽可能多地控制用户操作的方式设计页面,包括将表单中输入的数据保存在本地存储中的好主意,并在用户退出时检索它突然退出您的应用程序等。
注意:您可以将 JSInterop 与 SignalR 一起使用。没问题。
注意:CircuitHandler 处理 websocket 连接的生命周期,并且可能只能部分满足您的要求。
| 归档时间: |
|
| 查看次数: |
7767 次 |
| 最近记录: |