首先,我的 JS:
class MyClass {
static myMethod() {
alert("TEST");
}
}
我的 JS 运行时是这样注入(inject)的:
[Inject] protected IJSRuntime Js { get; set; }
我想像这样调用一个静态方法:
Js.InvokeVoidAsync("MyClass.myMethod");
但是我得到一个错误:
Microsoft.JSInterop.JSException: Could not find 'MyClass' in 'window'.
有没有一种明智、合理的方法解决这个问题,或者只通过将 window.MyClass = MyClass 添加到我的 JS?
最佳答案
试试这个(假设服务器端 Blazor)。
在您的 _Host.cshtml 文件中:
(function () {
window.MyClass = {
myMethod: function () {
return alert('TEST');
}
};
})();
在 .razor 文件中(顶部):
@*Inject JSRuntime to allow JavaScript Interop *@
@inject IJSRuntime JSRuntime
在 .razor 文件的方法中:
await JSRuntime.InvokeAsync<string>(
"MyClass.myMethod", null
);
关于javascript - 如何从 Blazor C# 代码调用静态 JavaScript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58888300/