【发布时间】:2021-04-15 22:25:53
【问题描述】:
Blazor WASM 客户端应用程序需要在 Web 浏览器屏幕上具有某些菜单项的悬停事件,并在平板电脑大小的屏幕上具有单击事件。为了接收浏览器屏幕的宽度,使用 js 互操作和额外的浏览器服务(类似于https://blazor.tips/blazor-how-to-ready-window-dimensions/ 中的方法)来获取宽度并在事件处理中应用条件。但是,如果此 Blazor 应用程序最初是在 Web 浏览器上加载的(比如 >1000 像素的屏幕具有悬停事件)并且当调整为标签宽度时(比如
是否有任何替代方法可以将屏幕宽度的动态变化读取到 Blazor 应用程序中的组件中?
注意: 有一种方法可以使用 BlazorPro 检测屏幕尺寸。 BlazorSize 包https://github.com/EdCharbeneau/BlazorSize 但不幸的是,它对我不起作用
【问题讨论】:
-
-
您可以从 Javascript 调用 Blazor 方法。因此,在 JS 中读取您更改的尺寸,并通过方法调用发送它。
-
谢谢@Bennyboy1973,但是有没有办法不从 blazor 调用 javascript 方法来处理此页面上发生的每个事件。因为有 7-8 个按钮具有大屏幕的悬停事件和小屏幕的单击事件,我正在尝试以有效的方式编写代码。
-
您不需要从 Blazor 调用 Javascript。您需要在调用 Blazor 方法的 javascript 中有一个 window.resize 事件处理程序。
-
或者,您可以填充隐藏的输入字段并在 window.resize 处理程序内触发其 onchange 事件。然后,您可以像往常一样在 Blazor 中处理 onchange 事件,而无需使用 Interop 调用。
标签: javascript blazor-webassembly blazor-jsinterop