我正在尝试使用 JSinterop 从我的 Blazor 组件调用 javascript 函数,但我总是收到此错误:
"未捕获的语法错误:输入意外结束"。
另外,当页面完全加载时,javascript函数会自动调用,这不是要求的行为,因为我想在单击按钮时触发该函数。
@page "/jsInterop"
@inject IJSRuntime jsRuntime
<h3>JSinterop</h3>
<button type="button" class="btn btn-primary"
onclick="@setLocalStorage()">
Trigger JavaScript Prompt
</button>
@code{
public object setLocalStorage()
{
return jsRuntime.InvokeAsync<object>("interop.setItem", "username",
"Aymen");
}
}
window.interop = {
setItem: function (name, value) {
window.localStorage[name] = value;
return value;
},
};
您有一个语法错误,其中有 onclick 事件
onclick="@setLocalStorage()"
应该是
@onclick=“@setLocalStorage”
所有 Blazor 事件现在都需要以 @ 为前缀。
您还需要更改点击处理程序的签名,并且应该等待调用。
public async Task setLocalStorage()
{
await jsRuntime.InvokeAsync<object>("interop.setItem", "username",
"Aymen");
}